考虑这个Python片段:
for a in range(10):
if a == 7:
pass
if a == 8:
pass
if a == 9:
pass
else:
print "yes"
如何写得更短?
#Like this or...
if a ?????[7,8,9]:
pass
答案 0 :(得分:17)
使用in
运算符:
if a in (7,8,9):
pass
答案 1 :(得分:15)
测试 a 是否属于某个范围:
if 7 <= a <= 9:
pass
测试 a 是否在给定的序列中:
if a in [3, 5, 42]:
pass
答案 2 :(得分:2)
for a in range(10):
if a > 6:
continue
print('yes')
答案 3 :(得分:2)
根据您的原始代码,直接“pythonic”替换是:
if not a in [7, 8, 9]:
print 'yes'
或
if a not in [7, 8, 9]:
print 'yes'
后者读得好一点,所以我猜它有点“pythonic”。
答案 4 :(得分:1)
if a in [7,8,9]
答案 5 :(得分:1)
根据您的想法,map()
功能也很有趣:
def _print(x):
print 'yes'
map(_print, [a for a in range(10) if a not in (7,8,9)])
答案 6 :(得分:1)
如何使用lambda。
>>> f = lambda x: x not in (7, 8, 9) and print('yes')
>>> f(3)
yes
>>> f(7)
False
答案 7 :(得分:1)
由于问题被标记为初学者,我将添加 一些基本的if语句建议:
if a == 7: pass if a == 8: pass if a == 9: ... else: ...
是三个独立的if语句,前两个没有效果,else仅指
if a == 9:
所以如果a是7或8,则程序打印“是”。为了将来使用这样的if-else语句,请确保使用elif:
if a == 7:
seven()
elif a == 8:
eight()
elif a == 9:
nine()
else:
print "yes"
如果他们要求执行相同的操作,则只使用一个if语句:
if a == 7 or a == 8 or a == 9:
seven_eight_or_nine()
else:
print "yes"