【问题标题】:the speed of a "for loop" in python populating a list is getting slower with each iterationpython中填充列表的“for循环”的速度随着每次迭代而变慢
【发布时间】:2019-08-06 11:50:48
【问题描述】:

我正在使用 for 循环在 python 中填充大量列表:

随着每次迭代,速度越来越慢。

tdif=[0]*316
for i in tnrange(len(list_ngrams2)):
    store=[]
    for value in list_ngrams2[i]:  
        if  value in features:
            store.append(value)
    tdif[i]=store

列表推导也有同样的问题:

tdif=[value for lst in list_ngrams2 for value in lst if value in features]

Run-time analysis

那么如何加快速度呢?

enter image description here

【问题讨论】:

  • 你的问题是什么?
  • 如何加快速度?
  • 您没有向我们提供几乎足够的信息来提供帮助。什么是list_ngrams2,什么是tqdm,什么是features?您绝对需要tdif 作为列表吗?你的 for 循环和列表理解甚至不等价(np.array 在后者中被调用)。
  • list_ngrams2 是 3 克(元组)列表的列表。我想创建相同的元组列表列表,但只创建那些包含在特征列表中的列表。
  • @RobStreeting 它由for 循环设置。我怀疑tnrange() 应该只是range()

标签: python list performance loops for-loop


【解决方案1】:

表示为列表推导——假设它不需要限制或填充到 tdif 中的 316 个元素:

features_set = set(features)
tdif = [
    [value for value in values if value in features_set]
    for values in list_ngrams2
]

【讨论】:

    猜你喜欢
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    相关资源
    最近更新 更多