Python 3.x 将列表(iterable)追加到空列表将返回空列表

Python 3.x 将列表(iterable)追加到空列表将返回空列表,python-3.x,list,grouping,itertools,Python 3.x,List,Grouping,Itertools,有人能解释为什么这不起作用吗?我想创建一个包含多个列表的列表(list0),在本例中,该列表由第一个单词(Test0、Test1、Test2)分组 输出变为: ['Test0 A.csv'] [[]] ['Test1 A.csv', 'Test1 B.csv'] [[], []] ['Test2 A.csv', 'Test2 B.csv', 'Test2 C.csv'] [[], [], []] 感谢您的帮助! /David是一个迭代器,而不仅仅是一个iterable。因此,迭代不一定是可重复

有人能解释为什么这不起作用吗?我想创建一个包含多个列表的列表(list0),在本例中,该列表由第一个单词(Test0、Test1、Test2)分组

输出变为:

['Test0 A.csv']
[[]]
['Test1 A.csv', 'Test1 B.csv']
[[], []]
['Test2 A.csv', 'Test2 B.csv', 'Test2 C.csv']
[[], [], []]
感谢您的帮助!
/David是一个迭代器,而不仅仅是一个iterable。因此,迭代不一定是可重复的;在这种情况下,迭代迭代器会耗尽它。您可以通过复制打印调用来查看此操作的效果:

for k,g in groupby(list1, key=lambda x: x.split(' ')[0]):
    print(list(g))
    print(list(g))
    list0.append(list(g))
    print(list0)
输出:

['Test0 A.csv']
[]
[[]]
['Test1 A.csv', 'Test1 B.csv']
[]
[[], []]
['Test2 A.csv', 'Test2 B.csv', 'Test2 C.csv']
[]
[[], [], []]

要解决此问题,请将从中创建的列表保存到可以打印和附加的名称中:

for k,g in groupby(list1, key=lambda x: x.split(' ')[0]):
    g_list = list(g)
    print(g_list)
    list0.append(g_list)
    print(list0)

g
是一个迭代器,而不仅仅是一个iterable。因此,迭代不一定是可重复的;在这种情况下,迭代迭代器会耗尽它。您可以通过复制打印调用来查看此操作的效果:

for k,g in groupby(list1, key=lambda x: x.split(' ')[0]):
    print(list(g))
    print(list(g))
    list0.append(list(g))
    print(list0)
输出:

['Test0 A.csv']
[]
[[]]
['Test1 A.csv', 'Test1 B.csv']
[]
[[], []]
['Test2 A.csv', 'Test2 B.csv', 'Test2 C.csv']
[]
[[], [], []]

要解决此问题,请将从中创建的列表保存到可以打印和附加的名称中:

for k,g in groupby(list1, key=lambda x: x.split(' ')[0]):
    g_list = list(g)
    print(g_list)
    list0.append(g_list)
    print(list0)

如果复制行
print(list(g))
,就会看到发生了什么:迭代迭代器(!)会耗尽它。以临时名称保存列表,打印并附加。我明白了!我的代码中有一些其他错误,并使用打印进行调试,然后没有任何工作了。非常感谢。如果复制行
print(list(g))
,就会看到发生了什么:迭代迭代器(!)会耗尽它。以临时名称保存列表,打印并附加。我明白了!我的代码中有一些其他错误,并使用打印进行调试,然后没有任何工作了。非常感谢。