我有兩個列表:Python的地圖兩個列表基於狀況的真實
A: [ True True True False True False True ]
B: ['A', 'B', 'C', 'D', 'E', 'F', 'G']
我想僅從列表B
其中列表A
是True
這些值。
希望的輸出:
['A', 'B', 'C', 'E', 'G']
我有兩個列表:Python的地圖兩個列表基於狀況的真實
A: [ True True True False True False True ]
B: ['A', 'B', 'C', 'D', 'E', 'F', 'G']
我想僅從列表B
其中列表A
是True
這些值。
希望的輸出:
['A', 'B', 'C', 'E', 'G']
相當簡單問題被張貼作爲一個問題;這裏是解決方案。如果你可以在問這裏之前嘗試一下,將不勝感激。
代碼:
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']
我希望這個工程的蟒蛇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
您可以使用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))
如果您不希望導入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']