繁体   English   中英

Python内联列表递归

[英]Python Inline list recursively

我想对列表进行递归读取

例如,我有以下内容:

[x if x % 2 == 0 else [a for a in [9,8,7]] for x in [2,3,4,5]]

输出是:

[2, [9, 8, 7], 4, [9, 8, 7]]

但我希望它是:

[2, 9, 8, 7, 4, 9, 8, 7]

可能吗?

我试过了

[x if x % 2 == 0 else a for a in [9,8,7] for x in [2,3,4,5]]

并没有工作[2, 9, 4, 9, 2, 8, 4, 8, 2, 7, 4, 7]

提前致谢。

或者没有itertools:

a = [[x] if x % 2 == 0 else [a for a in [9,8,7]] for x in [2,3,4,5]]
a = [i for x in a for i in x]
print (a)

itertools负责这个:

from collections import Iterable
from itertools import chain

t =  [x if x % 2 == 0 else [a for a in [9,8,7]] for x in [2,3,4,5]]
final_list = list(chain.from_iterable(item if isinstance(item,Iterable) and
                    not isinstance(item, basestring) else [item] for item in t))
print(final_list)

来源: 通过列表理解来压缩列表列表

编辑:以前的解决方案的问题是它只适用于数值相同的数组(例如[[1,2], [3,4]] ),其中数组如[5, [1,2], [3,4]]返回一些链对象,因为不同级别的值(即5 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM