Python:使用 List Comprehensions 而不是循环以提高性能

标签 python performance optimization list-comprehension

我有一个来自字典的类型(示例)

l =('1037_97',["a","b","c","d","e"])

我想保存一个文件(las 格式)但是Liblas只能写单点。

for l in Groups.iteritems():
    for p in xrange(len(l[1])):
        file_out.write(l[1][p])

我正尝试使用如果可能 List Comprehensions 以节省代码并加速循环

最佳答案

循环理解不一定会加速循环。如果最终结果应该是一个列表,它们只会加速循环。列表理解比创建一个空列表并一个一个地附加到它更快。

在您的情况下,您希望将项目写入文件,而不是创建新列表。然后浪费了列表创建成本。

尽管您不需要 xrange() 调用,只需遍历 l[1]。您也不需要 .iteritems(),因为您忽略了键。使用 .itervalues() 代替:

for lst in Groups.itervalues():
    for p in lst:
        file_out.write(p)

我使用lst作为循环变量; l 在许多字体中很容易与 i 混淆。

关于Python:使用 List Comprehensions 而不是循环以提高性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14815256/

相关文章:

python正则表达式使用捕获组来定义另一个组长度{}

python - 如何更改鼠标指针颜色 tkinter?

python - 合并 Pandas 中的两个时间序列并在阈值时间差内提取观察值

performance - CSS 选择器中的标记名称(例如 div#id): how is it read?(从左到右还是从右到左?)

html - 如何测试 javascript 代码的速度 - SVG 与 CANVAS

javascript - 单位圆内的 10 个点 - 寻找 D3 力布局的最佳分布?

c++ - 字符串存储优化

Python AF_UNIX 客户端 C 服务器

r - 对于高基数分组,为什么使用 dplyr 管道 (%>%) 比等效的非管道表达式慢?

tensorflow - 为什么tensorflow的AdamOptimizer的实现不支持L2归一化