Python 将变量与多个值进行比较的简明方法
我一直在试图理解是否可以使用类似于我在下面演示的if语句。这是我的理解,不是吗Python 将变量与多个值进行比较的简明方法,python,if-statement,Python,If Statement,我一直在试图理解是否可以使用类似于我在下面演示的if语句。这是我的理解,不是吗 for i in range(10): if i == (3 or 5) or math.sqrt(i) == (3 or 5): numbers.append(i) 有了这段代码,我只得到了数字3和9,而我应该得到3,5,9。有没有其他方法可以在不列出下面代码的情况下执行此操作 for i in range(10): if i == 3 or i == 5 or math.sqrt(i) == 3
for i in range(10):
if i == (3 or 5) or math.sqrt(i) == (3 or 5):
numbers.append(i)
有了这段代码,我只得到了数字3
和9
,而我应该得到3,5,9
。有没有其他方法可以在不列出下面代码的情况下执行此操作
for i in range(10):
if i == 3 or i == 5 or math.sqrt(i) == 3 or math.sqrt(i) == 5:
numbers.append(i)
您可以在操作符中使用
:
for i in range(10):
if i in (3, 5) or math.sqrt(i) in (3, 5):
numbers.append(i)
或者,如果您希望每个计算都在同一组结果中,您可以使用
只是一个小小的吹毛求疵,sqrt
很可能迟早会返回一个float
,这种方法在将来会很愚蠢,因此将帮助您避免遇到float“bug”,例如:
这将导致您的条件失败。我建议您不要在此处使用“==”而使用“in”。这是代码:
for i in range(10):
if i in [3,5] or math.sqrt(i) in [3,5]:
numbers.append(i)
相当于
if i == 3 or math.sqrt(i) == 3:
导致结果为3和9。
这是因为3或5
通过将3作为第一个非零数字(非零数字视为真)来计算为3。例如,0或5将被评估为5 您可以使用下面的列表理解来完成
import math as mt
a=list(range(10))
filtered_list=[x for x in a if x in [3,5] or mt.sqrt(x) in [3,5]]
print(filtered_list)
有一个:
if i in (3,5) or math.sqrt(i) in (3,5):
如果我在[3,5]
中这样做,你可以做,如果你解释一下你提供的代码是如何回答这个问题的,那么这将是一个更好的答案。
if i == 3 or math.sqrt(i) == 3:
import math as mt
a=list(range(10))
filtered_list=[x for x in a if x in [3,5] or mt.sqrt(x) in [3,5]]
print(filtered_list)
if i in (3,5) or math.sqrt(i) in (3,5):