在这里,我尝试合并这两个列表,为所有项目制作一个。
n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten(n):
s=[]
for x in n:
s.append(x)
return s
print flatten(n)
我试图得到结果
[1,2,3,4,5,6,7,8,9]
但我正在
[[1, 2, 3], [4, 5, 6, 7, 8, 9]]
我不明白为什么,我想我清楚地将每个值分配给列表' s'在for循环中。
答案 0 :(得分:3)
您要附加到列表中。每个子列表都作为自己的项目附加到新列表中,与最初的方式完全相同。您想要扩展列表:
s.extend(x)
答案 1 :(得分:2)
使用extend,而不是追加
n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten(n):
s=[]
for x in n:
s.extend(x)
return s
print flatten(n)
祝你好运。
答案 2 :(得分:2)
您应该使用list.extend,追加是附加每个子列表而不是仅添加内容。 x
是每个子列表,所以只需附加子列表显然会再次为您提供列表。
您还可以使用itertools.chain展平列表:
n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
print(list(chain.from_iterable(n)))
或使用list comp:
n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
print([ele for sub in n for ele in sub])