简体   繁体   English

python itertools groupby返回空

[英]python itertools groupby return empty

I'm very confusing why result of itertools.groupby has converted into list, still return empty? 我非常困惑,为什么itertools.groupby的结果已转换为列表,仍然返回空? But you can see the correct print result! 但是您可以看到正确的打印结果!

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)

Why arr is empty? 为什么arr为空?

That's because Python iterator can only be iterated once . 那是因为Python迭代器只能被迭代一次

For example: 例如:

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) # []

In your case i is an iterator, and it's been iterated in print , so removing the print or assign it to a variable before printing: 在您的情况下, i是一个迭代器,并且它已经在print进行了迭代,因此在print之前删除print或将其分配给变量:

l = list(i)
print(i2, l)
arr.append(l)

should give you the expected result. 应该给您预期的结果。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM