我有一个包含整数的 python 列表列表,我需要将它转换成一个列表。
如果列表不包含任何整数(仅其他列表),我可以使用此处提供的解决方案:Making a flat list out of list of lists in Python
即,
[item for sublist in main_list for item in sublist]
例如,
test_list = [[1,2,3,4,5,6], [7,8,9,10], [11,12,13,14]]
test_list = [item for sublist in test_list for item in sublist]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
但是,如果列表中包含整数,则此解决方案不起作用:
test_list_2 = [[1,2,3,4,5,6], 0, [7,8,9,10], [11,12,13,14]]
test_list_2 = [item for sublist in test_list_2 for item in sublist]
Traceback (most recent call last):
File "<ipython-input-28-c6531e09f706>", line 1, in <module>
test_list_2 = [item for sublist in test_list_2 for item in sublist]
TypeError: 'int' object is not iterable
有没有办法避免这个问题?谢谢。
请您参考如下方法:
你需要做这样的事情:
>>> test_list_2 = [[1,2,3,4,5,6], 0, [7,8,9,10], [11,12,13,14]]
>>> def lift_int(v):
... if not isinstance(v, list):
... return [v]
... else:
... return v
...
>>> test_list_2 = [item for sublist in test_list_2 for item in lift_int(sublist)]
>>> test_list_2
[1, 2, 3, 4, 5, 6, 0, 7, 8, 9, 10, 11, 12, 13, 14]
