在列表的特定范围内获取元素

mac*_*ery 3 python list

例如,我有一个Python列表list = [1,2,3,4,5,6,7,8,9]。另外,我还有另一个清单list2 = ['a','b','c','d','e','f','g','h','j']。现在,我要执行以下操作:

idx = (list > 3) & (list < 7)
list2 = list2[idx]
Run Code Online (Sandbox Code Playgroud)

这应该屈服['d','e','f']。当然,列表是不可能的。如何使用列表来完成?

Aja*_*234 6

您可以使用zip

l1 = [1,2,3,4,5,6,7,8,9]
l2 = ['a','b','c','d','e','f','g','h','j']
result = [a for a, b in zip(l2, l1) if 3 < b < 7]
Run Code Online (Sandbox Code Playgroud)

输出:

['d', 'e', 'f']
Run Code Online (Sandbox Code Playgroud)

要获得简化清单:

result, reduced = map(list, zip(*[[a, b] for a, b in zip(l2, l1) if 3 < b < 7]))
Run Code Online (Sandbox Code Playgroud)

输出:

['d', 'e', 'f'] #result
[4, 5, 6] #reduced
Run Code Online (Sandbox Code Playgroud)