我有两个清单:
A: [ True True True False True False True ]
B: ['A', 'B', 'C', 'D', 'E', 'F', 'G']
我想只获取列表B
中列出A
为True
的那些值。
期望的输出:
['A', 'B', 'C', 'E', 'G']
答案 0 :(得分:2)
您可以使用itertools.compress(...)
:
import itertools
a = [ True, True, True, False, True, False, True ]
b = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
ab = itertools.compress(b, a)
print(list(ba))
答案 1 :(得分:1)
如果您不想导入itertools
,使用zip
内置函数的简单列表理解就足够了。
conditions = [True, True, True, False, True, False, True]
objects = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
result = [o for o, c in zip(objects, conditions) if c]
assert result == ['A', 'B', 'C', 'E', 'G']
答案 2 :(得分:0)
作为问题发布的相当简单的问题;这是解决方案。如果你能在这里问之前尝试一下,我将不胜感激。
代码:
a = [True, True, True, False, True, False, True]
b = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
res = []
for x in range(len(a)):
if a[x]==True:
res.append(b[x])
print res
输出:
['A', 'B', 'C', 'E', 'G']
答案 3 :(得分:0)
我希望这也适用于python 2;我在这台电脑上只有3台,但仍然是:
a = [ True, True, True, False, True, False, True ]
b = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
ab = []
for i, j in enumerate(a):
if j == True:
ab.append(b[i])
# in python 3 this was print(ab) :) I ported :)
print ab