当前位置: 首页 > 知识库问答 >
问题:

将变量与多个值进行比较的简明方法[重复]

左丘凡
2023-03-14

我一直在试图理解是否有可能使用类似于我在下面演示的if语句。我的理解是不是?

for i in range(10):
  if i == (3 or 5) or math.sqrt(i) == (3 or 5):
    numbers.append(i)

有了这段代码,我只得到数字3

for i in range(10):
  if i == 3 or i == 5 or math.sqrt(i) == 3 or math.sqrt(i) == 5:
    numbers.append(i)

共有3个答案

胡泓
2023-03-14

我要推荐的是,不要在这里使用"==",而是使用"in"。下面是代码:

for i in range(10):
  if i in [3,5] or math.sqrt(i) in [3,5]:
    numbers.append(i)
微生毅
2023-03-14
if i == (3 or 5) or math.sqrt(i) == (3 or 5):

相当于

if i == 3 or math.sqrt(i) == 3:

导致结果为3和9。
这是因为3或5通过将3作为第一个非零数字(非零数字视为真)计算为3。例如,0或5将被评估为5。

孟光耀
2023-03-14

您可以在操作符中使用

for i in range(10):
  if i in (3, 5) or math.sqrt(i) in (3, 5):
    numbers.append(i)

或者,如果您希望每个计算都在同一组结果中,您可以使用any()

results = [1, 2, ..., too long list for single line]
expected = (3, 5)

if any([result in expected for result in results]):
    print("Found!")

只是一个小小的吹毛求疵,sqrt很可能迟早会返回一个float,这种方法将来会很愚蠢,因此math.isclose()或其他方法将帮助您避免遇到float“bug”,例如:

2.99999999999999 in (3, 5)  # False

这会导致你的病情恶化。

 类似资料:
  • 有没有更简洁的方法来做到这一点? 编辑:我的问题确实是重复的。对于任何阅读这篇文章的人,我建议再看看其他的线程--它们有一些好的东西。

  • 问题内容: 基本上我想知道是否有一种方法可以缩短这样的事情: 以这种方式可以针对多个值测试变量或将其与多个值进行比较,而无需每次都重复变量和运算符。 例如,与此类似的事情可能会有所帮助: 或任何会减少打字的内容。 问题答案: 这是我用的

  • 问题内容: Python如何将多个变量与一个值进行比较?,例如: 我希望返回一个列表: 问题答案: 方法1 方法2 使用元组或列表 方法3 最好是使用set集合

  • 测试变量的常用方法是检查它是否引用singletone: 根据PEP-8,建议将此方法作为检查的唯一方法: 与None之类的单例进行比较时,应始终使用is或is,永远不要使用相等运算符。 虽然有时我发现以下测试在不同的来源: 这种方式看起来不错,但是我不太明白为什么简单易读的结构可以被所取代。它在某些情况下更有用,还是指代码风格? UPD:使用我发现非常有用(到目前为止):

  • 问题内容: 比较一个值与多个选项的最漂亮方法是什么? 我知道有很多方法可以做到,但是我正在寻找最整洁的方法。 我问是因为我希望这是可行的(当您查看时,这显然不是): 问题答案: 不要试图太偷偷摸摸,尤其是当它不必要地影响性能时。如果您确实有很多比较需要做,只需将其格式化即可。

  • 问题内容: 考虑以下: 有什么办法可以缩短时间? Javascript中有什么类似的东西吗? 另外,jQuery可以在这里提供帮助吗? 问题答案: 使用正则表达式: 或相反: [更新]更短;-)