我有一个列表,如:
j=[[1,2,3],[4,5,6],[7,8,9,10],[11,12,13,14,15]]
我希望从大于特定阈值的列表列表中获取所有元素的列表。我知道有一个列表时有语法:
k=[1,2,3,4,5,6,7]
k2=[i for i in k if i>5]
k2=[6,7]
将列表列表作为输入时是否有类似的方法? 是否还可以使元素的指数大于该阈值?
答案 0 :(得分:6)
这是你的意思吗?
duration
要获取(内部列表的)索引,您可以使用In [3]: l1 = [[1,2,3],[4,5,6],[7,8,9,10],[11,12,13,14,15]]
In [4]: [e for l2 in l1 for e in l2 if e>5]
Out[4]: [6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
:
enumerate
如果您希望将索引放在单独的列表中(联合国)zip:
In [5]: [(i2, e) for l2 in l1 for i2, e in enumerate(l2) if e>5]
Out[5]:
[(2, 6),
(0, 7),
(1, 8),
(2, 9),
(3, 10),
(0, 11),
(1, 12),
(2, 13),
(3, 14),
(4, 15)]
[如果您使用的是Python 2,则不需要In [6]: list(zip(*[(i2, e) for l2 in l1 for i2, e in enumerate(l2) if e>5]))
Out[6]: [(2, 0, 1, 2, 3, 0, 1, 2, 3, 4), (6, 7, 8, 9, 10, 11, 12, 13, 14, 15)]
调用]。类似的方法将为您提供外部和内部列表的索引:
list
或,解压缩:
In [7]: [((i1,i2), e) for (i1,l2) in enumerate(l1) for i2, e in enumerate(l2) if e>5]
Out[7]:
[((1, 2), 6),
((2, 0), 7),
((2, 1), 8),
((2, 2), 9),
((2, 3), 10),
((3, 0), 11),
((3, 1), 12),
((3, 2), 13),
((3, 3), 14),
((3, 4), 15)]