我在Python中扁平化一个嵌套列表的部分时遇到了一些困难,这是一个列表。
[['31', '1'], '32', ['8', '16'], ['1', '3', '12'], ['4', '12'], '32', ['1', '3', '12'], ['4', '12'], '32', ['30', '1', '1']]
我想扁平化列表中的任何一个列表,最终结果是这样的。
['31', '1', '32', '8', '16', '1', '3', '12', '4', '12', '32', '1', '3', '12', '4', '12', '32', '30', '1', '1']
通过查找相关的方法,我尝试了这段代码。
list1 = (list(itertools.chain.from_iterable(list1)))
然而,它不仅扁平化了列表,还扁平化了单个字符串,将任何超过1个字符的字符串分割开来 (例如,'32'变成了'3','2'),看起来像这样。
['31', '1', '3', '2', '8', '16', '1', '3', '12', '4', '12', '3', '2', '1', '3', '12', '4', '12', '3', '2', '30', '1', '1']
有没有一种方法可以只平移这个列表里面的列表 而不平移单个字符串?如果术语不正确,很抱歉,我对操作这种列表不太熟悉。谢谢您
arr = [['31', '1'], '32', ['8', '16'], ['1', '3', '12'], ['4', '12'], '32', ['1', '3', '12'], ['4', '12'], '32', ['30', '1', '1']]
def extract(array):
for item in array:
if type(item) in [set, list, tuple]:
yield from extract(item)
else:
yield item
print(list(extract(arr)))
['31', '1', '32', '8', '16', '1', '3', '12', '4', '12', '32', '1', '3', '12', '4', '12', '32', '30', '1', '1']