参考:python decompose a list Flattening a shallow list in Python
虽然上面提到的解决方案很有帮助,但我的问题略有不同,我想知道是否有pythonic方法来解决它。
a = [['a-3','b-3'],'r',['j']]我想要的是一种干净的方式,让'a‘等于下面的内容:
a = ['a-3','b-3','r','j']我坚持使用Python2.4,所以兼容2.4的python解决方案会很棒,但我仍然会发现2.7+示例也很有趣。
主要问题是存在不可迭代的元素,否则sum(lst,[])可以很好地工作,2.7+的链方法也是如此
发布于 2011-06-28 04:57:32
Pythonic解可以表示很多东西。考虑到readability counts (PEP20),这是我对该主题的贡献:
def dec(input_, output_):
if type(input_) is list:
for subitem in input_:
dec(subitem, output_)
else:
output_.append(input_)示例:
input_ = [['a-3','b-3', ['x','hello', ['3','b']]],'r',['j']]
output_ = ['a-3', 'b-3', 'x', 'hello', '3', 'b', 'r', 'j']发布于 2011-06-28 04:41:52
这样如何:
itertools.chain.from_iterable(map(lambda i: i if type(i) == list else [i], a))或者,为了可读性:
def assure_is_list(a):
return a if type(a) == list else [a]
itertools.chain.from_iterable(map(assure_is_list, a))发布于 2011-06-28 04:50:14
def flatten(L):
if not L:
return L
elif isinstance(L[0], list):
return flatten(L[0]) + flatten(L[1:])
else:
return [L[0]] + flatten(L[1:])希望这能有所帮助
https://stackoverflow.com/questions/6498671
复制相似问题