我一直在试图理解是否有可能使用类似于我在下面演示的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)
我要推荐的是,不要在这里使用"==",而是使用"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 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。
您可以在操作符中使用:
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可以在这里提供帮助吗? 问题答案: 使用正则表达式: 或相反: [更新]更短;-)