我想检查 if 语句中的多个条件
if a:
# do something
在这种情况下,a 适用于多种情况
a==1、a==2、a==3而不是写作
if a == 1 or a == 2 or a == 3:
# do something
我正在尝试这样的事情
if a == condition for condition in [1, 2, 3]:
# do something
你走在正确的道路上。需要的是:
if a in [1,2,3]:
do something
作为替代
if a == 1 or a == 2 or a ==3:
正如Jonrsharpe正确指出的那样,也许你正在尝试
if any( a==condition for condition in [1,2,3] ):
这也以同样的方式工作。
只是为了补充其他答案,你最好的选择肯定是这个逻辑:
if a in set([1, 2, 3]):
#do something
甚至更好
if a in {1, 2, 3}:
#do something
我想在这里强调的是,在这种情况下,您应该使用set
。查找将更加高效。
此外,python文档建议这样做。
常见用途包括成员资格测试、从 序列,并计算相交等数学运算, 并集、差分和对称差分
最简单的写法是if a in (1, 2, 3)
你想写的东西可以写成
if any(a == condition for condition in [1, 2, 3])
The truth value of an array with more than one element is ambiguous
看起来像一个numpy错误消息。 如果 a
是一个 numpy ndarray 并且 b 包含您正在测试的值,则可以这样做。
import numpy as np
a = np.arange(6)
b = np.array([6,2,9])
if np.any(a == b[:, None]):
...
或
np.any(a[:,None] == b)
这利用了广播。
您的异常可以使用我的数组重现...
>>> if a == b[:, None]:
pass
Traceback (most recent call last):
File "<pyshell#281>", line 1, in <module>
if a == b[:, None]:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
>>>