找出 or 语句的哪一部分符合条件?
Figure out which part of or statement matches condition?
我有一个基本的 python 问题。我在 google 中搜索但找不到答案。我想知道当我在 if condition
中使用 or
时,是否有任何方法可以在以下示例中查看 if
条件的哪一部分是正确的。
我有清单:my= ['A','B','C']
if 'S' in my or 'T' in my or 'C' in my:
print('yes') # now I wanna know which one is correct. the answer here is `C`
注意:我知道我可以使用 for
遍历 my
的元素来找出答案。我想知道是否有相应的键码。
您必须隔离每个表达式,以便稍后对其进行测试:
my = ['A','B','C']
S = 'S' in my
T = 'T' in my
C = 'C' in my
if S or T or C:
# Now examine S, T and C separately
print('yes')
考虑以下 any
的用法。如果能写
就好了
# NameError on print(x)
if any(x in my for x in ['S', 'T', 'C']):
print(x)
except x
仅在生成器表达式的范围内。但是,您可以使用赋值表达式来捕获对 x
的最后一次赋值,以便在 any
returns.
之后使用
if any((witness := x) in my for x in ['S', 'T', 'C']):
print(witness)
witness
重复设置为x
;当比较最终成功时,any
停止进行比较,因此 witness
保留设置为最后检查的值。
由于重复代码和any
都已经在其他答案中,我认为值得提供另一个角度作为单行示例if
:
print('S' if 'S' in my else 'T' if 'T' in my else 'C' if 'C' in my else 'Nothing')
或者,如果您不介意循环,单行代码可以如下所示:
print([char for char in 'STC' if char in my][0]) # Would throw IndexError if not found
重复海象一:
if (x := 'S') in my or (x := 'T') in my or (x := 'C') in my:
print('yes', x)
您的列表会打印 yes C
。
我看到 chepner 已经发布了一个类似的。我的有更多的代码重复,但具有惰性的优点,只计算需要的表达式,直到第一次命中。
我有一个基本的 python 问题。我在 google 中搜索但找不到答案。我想知道当我在 if condition
中使用 or
时,是否有任何方法可以在以下示例中查看 if
条件的哪一部分是正确的。
我有清单:my= ['A','B','C']
if 'S' in my or 'T' in my or 'C' in my:
print('yes') # now I wanna know which one is correct. the answer here is `C`
注意:我知道我可以使用 for
遍历 my
的元素来找出答案。我想知道是否有相应的键码。
您必须隔离每个表达式,以便稍后对其进行测试:
my = ['A','B','C']
S = 'S' in my
T = 'T' in my
C = 'C' in my
if S or T or C:
# Now examine S, T and C separately
print('yes')
考虑以下 any
的用法。如果能写
# NameError on print(x)
if any(x in my for x in ['S', 'T', 'C']):
print(x)
except x
仅在生成器表达式的范围内。但是,您可以使用赋值表达式来捕获对 x
的最后一次赋值,以便在 any
returns.
if any((witness := x) in my for x in ['S', 'T', 'C']):
print(witness)
witness
重复设置为x
;当比较最终成功时,any
停止进行比较,因此 witness
保留设置为最后检查的值。
由于重复代码和any
都已经在其他答案中,我认为值得提供另一个角度作为单行示例if
:
print('S' if 'S' in my else 'T' if 'T' in my else 'C' if 'C' in my else 'Nothing')
或者,如果您不介意循环,单行代码可以如下所示:
print([char for char in 'STC' if char in my][0]) # Would throw IndexError if not found
重复海象一:
if (x := 'S') in my or (x := 'T') in my or (x := 'C') in my:
print('yes', x)
您的列表会打印 yes C
。
我看到 chepner 已经发布了一个类似的。我的有更多的代码重复,但具有惰性的优点,只计算需要的表达式,直到第一次命中。