在Python中,有没有办法说"如果x == 2或x == 3"而不重复"x =="部分两次?

Den*_*neb 0 python if-statement

以此代码为例:

if int(str(x)[len(str(x)) - 1]) == 0 or int(str(x)[len(str(x)) - 1]) == 5:
   return False
Run Code Online (Sandbox Code Playgroud)

假设我有一个更大的列表or,是否有更简单的方法来做到这一点?

好的,既然我知道使用if x in ( , , , etc),我该如何实现这个:

filter(lambda x: int(str(x)[len(str(x)) - 1]) in (0, 5), range(1000)) 得到它,错误的括号,错误的python程序员.

Dav*_*nan 8

最简单的方法是这样的:

if x in (2,3):
    ....
Run Code Online (Sandbox Code Playgroud)

如果你有大量的候选值,那么这将导致线性搜索,这可能是昂贵的.如果这很重要,那么一套可以带来更好的表现:

if x in set((2,3)):
    ....
Run Code Online (Sandbox Code Playgroud)

请注意,使用集合的任何性能优势只有在集合可以实例化一次,但多次测试成员资格时才会出现.

myset = set((2,3))
....
if x in myset:
    ....
Run Code Online (Sandbox Code Playgroud)

在我看来,你实际上是用5测试可分性,可以这样做:

if x % 5 == 0:
    ....
Run Code Online (Sandbox Code Playgroud)