Let*_*t4U 6 python list-comprehension
我有这个:
self.lines = [...]
cnt = defaultdict(int)
for line in self.lines:
cnt[line] += 1
Run Code Online (Sandbox Code Playgroud)
现在这个工作.但我想知道是否可以使用列表理解来完成(增加defaultdict中特定行的计数)?
这是语法错误:
[cnt[line] += 1 for line in self.lines]
Run Code Online (Sandbox Code Playgroud)
顺便说一下,为什么不能在列表理解中使用这样的表达式呢?它很简单,并且会极大地改善这些代码的简洁性和性能.
您的列表理解不起作用,因为作业不是表达式。
您不应该使用列表理解来替换循环。写一个循环。列表推导式用于构建列表。
为什么你认为列表理解会提高性能?如果有的话,它可能会损害性能,因为它需要分配并分配给它构建的临时列表,然后永远不会使用。假设您的原始列表中有 1,000,000,000 行。