簡體   English   中英

python itertools groupby返回空

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM