Python的“if”子句的逻辑规则

时间:2014-10-07 14:22:05

标签: python list conditional-statements

我的代码中有一个if条件,例如:

a = [1,2,3]
b = [4,5,6]
c = [7,8,9]

当{ 1 a 中)或( 1 时,我希望'If'返回 true >在 b )或( 1 c 中)或( 5 a )或( 5 b 中)或( 5 c 中)

我试过了:

if (1 or 5) in (a or b or c):
    pass

但这显然没有这样做。 你能给我一个暗示吗?感谢

2 个答案:

答案 0 :(得分:2)

你应该使用套装:

a = {1, 2, 3}
b = {4, 5, 6}
c = {7, 8, 9}

a | b | c
#>>> {1, 2, 3, 4, 5, 6, 7, 8, 9}

{1, 5} & (a | b | c)
#>>> {1, 5}

bool({1, 5} & (a | b | c))
#>>> True

if {1, 5} & (a | b | c):
    print("Yeah!")
#>>> Yeah!

if not {1, 5}.isdisjoint(a | b | c):
    print("Yeah!")    
#>>> Yeah!

如果您想要短路:

if not all({1, 5}.isdisjoint(items) for items in (a, b, c)):
    print("Yeah!")    
#>>> Yeah!

答案 1 :(得分:0)

这似乎对我有用,虽然可能有一个内置来连接三个列表。

a = [1,2,3]
b = [4,5,6]
c = [7,8,9]  
target = [1,5]

any(x for x in (a+b+c) if x in target)

True