我想将for循环中的s
与一堆5
倍数的数字进行比较,我不想写出所有or
'介于两者之间。有没有更简单的方法来写这个?
for s in range(0,50):
lst = []
if s == 5,10,15,20,25,30,35,40,45:
lst.append(" ")
else:
lst.append(letter) #letter is defined earlier
当然,这与我编写它的方式不正确,并且会出现一堆错误。
答案 0 :(得分:1)
这是 1 的in
operator:
if s in (5, 10, 15, 20, 25, 30, 35, 40, 45):
但是,在这种特定情况下,你可以看看这个号码是否可被5
整除:
if not s % 5:
# or
if s % 5 == 0:
此外,您需要将此行移到循环之外:
lst = []
否则,每次迭代都会重新定义lst
。
1 在Python 3.3或更高版本中,在这里使用set literal而不是元组文字会更有效:
if s in {5, 10, 15, 20, 25, 30, 35, 40, 45}:
较新版本的Python非常智能,可以识别这样的常量,只评估一次而不是每次遇到它们。因此,最好使用具有O(1)
(常量)查找时间的集合,而不是具有O(n)
(线性)查找时间的元组。