Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将变量与多个值进行比较的简明方法_Python_If Statement - Fatal编程技术网

Python 将变量与多个值进行比较的简明方法

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

我一直在试图理解是否可以使用类似于我在下面演示的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 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):