Skip to main content
 首页 » 编程设计

python之'or' 元组的大多数 pythonic 方式

2025年05月04日15jiqing9006

我有一个返回 bool 值的三元素元组的方法,我在循环中调用它。我想最终得到一个包含单个元组的 或 结果的三元素元组。如果该方法只返回一个 bool 值,它将是:

result = False 
for j in some_list: # there is more processing in the loop, omitted 
    result |= method(j) 
return result 

我能否以某种优雅的方式将其概括为 method() 现在返回的元组?我当然可以:

result = False, False, False 
for j in some_list: 
    res1, res2, res3 = method(j) 
    result = res1 | result[0], res2 | result[1], res3 | result[2] 
return result 

但似乎有点不雅观。

编辑:澄清我想在两种情况下返回结果——首先是一个 bool 值,然后是一个 bool 值元组

请您参考如下方法:

您可以使用 zip 在列表理解中执行此操作。

result = False, True, False 
xor = True, True, False 
result = [a|b for a,b in zip(result,xor)] 
print(result) 

或者在您的例子中:

result = False, False, False 
for j in some_list: 
    xor = method(j) 
    result = [a|b for a,b in zip(result,xor)] 

如果它必须是元组,您可以将列表 comp 更改为生成器并将其包装在 tuple() 中。

您还可以将对 method(j) 的调用移动到对 zip 的调用中,而不是将其分配给中间变量。我认为这会降低可读性,但这是个人喜好问题。