2015-09-16 39 views
0

如何根据列表A和B使用列表理解来创建列表C,其中C列表包含B中的项目为TRUE时的项目。我for loop实现是在这里:list comprenhension using two list

A = ["ID","population","median_age"] 
B = [False False True] 
C = [] 
for x in range(len(A)): 
    if B[x] == True: 
     C.append(A[x]) 
+0

列表A和B的长度相同吗? – Oni1

+0

第一个C应该是'B'还是逗号之间的假? –

+0

@AnnAddicks是啊,A和B的长度相同,对不起,我在我的问题中犯了一些错误,第一个C实际上是B列表,而列表中的逻辑值之间的逗号是逗号。 –

回答

0
C = [ A[x] for x in range(len(A)) if B[x] ] 
+0

请注意,“== True”总是*冗余。 B [x]已经是True或False。 – Prune

+0

感谢@Prune,它工作正常 –

+0

很高兴听到它。请记住“接受”其中一个答案,以便您的问题得到妥善解决。 – Prune

5

你可以做这样的事情:

C = [a for a, b in zip(A, B) if b] 

做这样的事情for i in range(len(lst))是在Python很少成语,如你平时喜欢做for i, value in enumerate(lst)。但在这种情况下,使用zip似乎既安全又更通俗,因为它管理的案件中AB的长度不同。

+1

谢谢@ vincent-savard,它工作正常。 –