Python 3.x 将列表(iterable)追加到空列表将返回空列表
有人能解释为什么这不起作用吗?我想创建一个包含多个列表的列表(list0),在本例中,该列表由第一个单词(Test0、Test1、Test2)分组 输出变为: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。因此,迭代不一定是可重复
['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))
,就会看到发生了什么:迭代迭代器(!)会耗尽它。以临时名称保存列表,打印并附加。我明白了!我的代码中有一些其他错误,并使用打印进行调试,然后没有任何工作了。非常感谢。