[英]python itertools groupby return empty
我非常困惑,为什么itertools.groupby的结果已转换为列表,仍然返回空? 但是您可以看到正确的打印结果!
from itertools import groupby
sample = [['data', '8', '1', '14:05:00', '15:05:00', 'fall'], ['data', '8', '1', '14:45:00', '15:45:00', 'winter']]
arr= []
for i2,i in groupby(data, key=lambda x: x[5]):
print(i2, list(i))
arr.append(list(i))
print(arr)
为什么arr为空?
那是因为Python迭代器只能被迭代一次 。
例如:
def f():
for i in range(5):
yield i
i = f() # i is an iterator
list(i) # [1, 2, 3, 4, 5]
# i has been iterated once, now it's empty
list(i) # []
在您的情况下, i
是一个迭代器,并且它已经在print
进行了迭代,因此在print
之前删除print
或将其分配给变量:
l = list(i)
print(i2, l)
arr.append(l)
应该给您预期的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.