在Python中展平混合列表(包含iterables和noniterables)

时间:2010-07-03 21:26:44

标签: python list arrays

  

可能重复:
  Flatten (an irregular) list of lists in Python

我如何在Python中展平包含iterables和noniterables的列表,例如[1,[2,3,4],5,[6]]?结果应该是[1,2,3,4,5,6],并且列表清单(等)肯定永远不会发生。

我尝试过使用itertools.chain等,但它们似乎只适用于列表列表。救命啊!

1 个答案:

答案 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))将生成列表结果。

如果您的实际规格略有不同,希望这对您来说非常容易适应!

相关问题