gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:18:00 25 4
gpt4 key购买 nike

我有一个返回 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 的调用中,而不是将其分配给中间变量。我认为这会降低可读性,但这是个人喜好问题。

关于python - 'or' 元组的大多数 pythonic 方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33743360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com