跳到内容

重用 groupby 生成器 (B031)

源自 flake8-bugbear linter。

作用

检查多次使用从 itertools.groupby() 返回的生成器。

为什么这不好?

多次使用生成器会在第二次使用时没有任何效果。如果稍后需要该数据,则应将其存储为列表。

示例

import itertools

for name, group in itertools.groupby(data):
    for _ in range(5):
        do_something_with_the_group(group)

建议改为

import itertools

for name, group in itertools.groupby(data):
    values = list(group)
    for _ in range(5):
        do_something_with_the_group(values)