跳到内容

不必要的 list 强制转换 (PERF101)

源自 Perflint linter。

修复总是可用的。

作用

检查 for 循环可迭代对象上显式的 list 转换。

为什么这不好?

使用 list() 调用来急切地迭代已经可迭代的类型(例如元组、列表或集合)是低效的,因为它强制 Python 不必要地创建一个新列表。

删除 list() 调用不会改变代码的行为,但可能会提高性能。

请注意,与所有 perflint 规则一样,这仅用作微优化,并且在大多数情况下对性能的影响可以忽略不计。

示例

items = (1, 2, 3)
for i in list(items):
    print(i)

建议改为

items = (1, 2, 3)
for i in items:
    print(i)

修复安全性

如果 list() 调用中有注释,则此规则的修复被标记为不安全,因为注释可能会被删除。

例如,在以下情况下,修复将被标记为不安全

items = (1, 2, 3)
for i in list(  # comment
    items
):
    print(i)