我正在尝试使用Python中的列表推导式来展平一个列表。我的列表有点像这样
[[1, 2, 3], [4, 5, 6], 7, 8]
为了打印这个列表中的每个项目,我写了这个函数:
def flat(listoflist):
for item in listoflist:
if type(item) != list:
print(item)
else:
for num in item:
print(num)
交互式输出:
>>> flat(list1)
1
2
3
4
5
6
7
8
然后我使用相同的逻辑通过列表推导式来压平我的列表,但是我遇到了以下错误
list2 = [item if type(item) != list else num for num in item for item in list1]
这给了我以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
我该如何使用列表推导式来展开这种嵌套列表?
flatten(xs) = [ y | for x from xs , for y from ( if (type x == list) then flatten(x) else [x] ) ]
。现在只需将其转换为有效的Python语法。 - Will Ness