Python 替代列表理解

Python 替代列表理解,python,list-comprehension,Python,List Comprehension,我遇到一个问题,有人想为list1=[0,1,0,0,1]和list2=[0,1,0,1,1]生成list3=[1,0,1,0,0] 如果你想zip(列表1,列表2)因此只有zip(0,0)会为list3生成1 我想通过列表来表达后续代码: L3 = [] for x in zip(L1, L2): if sum(x) == 0: L3.append(1) else: L3.append(0) print L3 print [int(sum(x

我遇到一个问题,有人想为
list1=[0,1,0,0,1]和
list2=[0,1,0,1,1]
生成
list3=[1,0,1,0,0]

如果你想
zip(列表1,列表2)
因此只有
zip(0,0)
会为
list3
生成
1

我想通过列表来表达后续代码:

L3 = []
for x in zip(L1, L2):
    if sum(x) == 0:
        L3.append(1)
    else:
        L3.append(0)
print L3 
print [int(sum(x)==0) for x in zip(L1, L2)]
我可以使用此列表获得相同的输出:

L3 = []
for x in zip(L1, L2):
    if sum(x) == 0:
        L3.append(1)
    else:
        L3.append(0)
print L3 
print [int(sum(x)==0) for x in zip(L1, L2)]

我想知道是否有一种方法可以更准确地表达列表中初始代码块的if/else条件。我可以理解这个问题可能被认为是多余的,因为if/else条件自然包含在内,但是发布的备选方案可能对我非常有用

可以使用条件表达式:

print [1 if sum(x) == 0 else 0 for x in zip(list1, list2)]
这里,
1如果sum(x)==0,否则0
直接表示条件

有关详细信息,请参阅


另一种方法是将逻辑分解成一个函数,并从列表中调用该函数。这将允许逻辑使用任何流控制语句(条件语句、循环等)。

您可以使用条件表达式:

print [1 if sum(x) == 0 else 0 for x in zip(list1, list2)]
这里,
1如果sum(x)==0,否则0
直接表示条件

有关详细信息,请参阅

另一种方法是将逻辑分解成一个函数,并从列表中调用该函数。这将允许逻辑使用任何流控制语句(条件语句、循环等)