我有一个数字列表:testList = [1,[1],[12],2,3]
我想让它变成:flatList = [1,1,12,2,3]
使用通常的列表推导式无法实现。
flatList = [val for sublist in testList for val in sublist]
TypeError: 'int' object is not iterable
我怀疑问题出现在未嵌套的项被视为可迭代子列表,因此我尝试了以下方法:
flatList = [val if isinstance(sublist, int) == False else val for sublist in testlist for val in sublist]
但我不清楚语法,或者是否有更好的方法来完成这个操作。试图从else子句中删除val意味着val未定义。目前这样做仍然会给我同样的TypeError。
以下代码对我有效,但我想知道它是否可以以列表推导式的方式完成,并听取人们对此的意见。
for sublist in testlist:
if type(sublist) == int:
flat.append(sublist)
else:
for val in sublist:
flat.append(val)
print(flat)
>>>[1, 1, 12, 2, 3]
flat.extend(sublist)
替换 for 循环。 - Abhijith Asokan