首页 > 解决方案 > 列表操作后Groupby对象消失

问题描述

我正在尝试运行长度编码问题,在运行 groupby & list 操作后,我的 groupby 对象不知何故消失了。

import itertools
s = 'AAAABBBCCDAA'
for c, group in itertools.groupby(s):
    print(list(group))
    print(list(group))

我的输出是

['A', 'A', 'A', 'A']
[]
['B', 'B', 'B']
[]
['C', 'C']
[]
['D']
[]
['A', 'A']
[]

所以对于每个循环,2 个打印命令会产生不同的结果。

谁能帮忙解释我做错了什么?

标签: pythonrun-length-encoding

解决方案


因为有生成器,使用后它们就消失了:

>>> a = iter([1, 2, 3])
>>> list(a)
[1, 2, 3]
>>> list(a)
[]

要保留它们:

import itertools
s = 'AAAABBBCCDAA'
for c, group in itertools.groupby(s):
    l = list(group)
    print(l)
    print(l)

输出:

['A', 'A', 'A', 'A']
['A', 'A', 'A', 'A']
['B', 'B', 'B']
['B', 'B', 'B']
['C', 'C']
['C', 'C']
['D']
['D']
['A', 'A']
['A', 'A']

推荐阅读