gpt4 book ai didi

python - 用 if-else 高效地编写交换条件(python)

转载 作者:行者123 更新时间:2023-12-04 14:46:07 24 4
gpt4 key购买 nike

我试图用 2 个对象编写条件,它们的条件可以交换。看起来像:

# pseudo code
if (obj_a meets condition_a and obj_b meets condition_b) or
(obj_a meets condition_b and obj_b meets condition_a): return True
else: return False

编辑:如果所有条件以任何顺序满足不同对象,该函数应返回 True

但这似乎是硬编码的,如果我有更多的对象和更多的条件,那将是一堆具有交换条件的相同行。我如何设法有效地编写代码?例如:

# objs are Capitalized, conditions have a trailing tail for easier reading. (pseudo code)
if (A.a_ and B.b_ and C.c_) or
(A.b_ and B.c_ and C.a_) or
(A.c_ and B.a_ and C.b_) or
(A.b_ and B.a_ and C.c_) or
(A.c_ and B.b_ and C.a_) or
(A.a_ and B.c_ and C.b_): return True
else: return False

最佳答案

如果 objects 是您要应用条件的对象序列,而 condition 是一些检查相关条件的函数,那么您可以使用内置 anyitertools.permutations作为

any(condition(perm) for perm in itertools.permutations(objects))

使用问题中的示例,我们可以

import itertools

def condition(a, b, c) -> bool:
return a.a_ and b.b_ and c.c_

objects = [A, B, C]

if any(condition(*perm) for perm in itertools.permutations(objects)):
# Condition passed for some permutation.
else:
# Condition did not pass for any permutation.

关于python - 用 if-else 高效地编写交换条件(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70029062/

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