hob*_*es3 9 python if-statement
我经常最终编写代码
if x == 1 or x == 5 or x == 10 or x == 22 :
pass
Run Code Online (Sandbox Code Playgroud)
在英语中,继续重复似乎是多余的x,是否有更容易或更短的方式来写出这样的if语句?
也许x在一个元组( 1, 5, 10, 22, )或其他东西中检查存在的价值?
glg*_*lgl 14
是的,你是对的 - 无论是在一个元组中还是(如果重复进行此检查).
所以要么这样做
if x in (1, 5, 10, 22):
pass
Run Code Online (Sandbox Code Playgroud)
或者,如果您经常检查并且值的数量足够大,
myset = set((1, 5, 10, 22))
[...]
if x in myset:
pass
Run Code Online (Sandbox Code Playgroud)
的myset东西是要检查的更实用,更值.4个值非常少,因此您可以保持简单.400个值,你应该使用集...
正如Marcin所指出的,另一个方面是在集合中进行查找所必需的散列,这可能比线性搜索列表或元组的所需值更昂贵.
您可以使用in集合:
if x in [1, 5, 10, 22]:
# etc...
if x in {1, 5, 10, 22}: # New syntax for creating sets
# etc...
Run Code Online (Sandbox Code Playgroud)
请注意,每次执行该行时都会创建一个新列表.如果要考虑效率,只需创建一次集合并重复使用它.