我如何在Python中展平包含iterables和noniterables的列表,例如[1,[2,3,4],5,[6]]?结果应该是[1,2,3,4,5,6],并且列表清单(等)肯定永远不会发生。
我尝试过使用itertools.chain等,但它们似乎只适用于列表列表。救命啊!
答案 0 :(得分:1)
所以你想要只压扁1或2个级别,而不是递归到更多的depts;并且只在列表中,而不是其他迭代,如字符串,元组,数组......我的规格是否合适?好的,如果是的话,那么......:
def flat2gen(alist):
for item in alist:
if isinstance(item, list):
for subitem in item: yield subitem
else:
yield item
如果您想要列表结果,list(flat2gen(mylist))
将生成列表结果。
如果您的实际规格略有不同,希望这对您来说非常容易适应!