1

以这段代码为例:

if int(str(x)[len(str(x)) - 1]) == 0 or int(str(x)[len(str(x)) - 1]) == 5:
   return False

假设我有一个更大的or's 列表,有没有更简单的方法呢?

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

filter(lambda x: int(str(x)[len(str(x)) - 1]) in (0, 5), range(1000))明白了,错误的括号,糟糕的python程序员。

4

3 回答 3

8

最简单的方法是这样的:

if x in (2,3):
    ....

如果您有大量候选值,那么这将导致线性搜索,这可能会很昂贵。如果这很重要,那么一组可能会带来更好的性能:

if x in set((2,3)):
    ....

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

myset = set((2,3))
....
if x in myset:
    ....

在我看来,您实际上是在测试可被 5 整除,可以这样完成:

if x % 5 == 0:
    ....
于 2013-07-28T22:59:05.747 回答
1

使用“in”运算符:

if x in (2, 3):
    pass
于 2013-07-28T23:00:08.030 回答
0

这行得通吗?

if int(str(x)[-1])  in (0,5):
   return False

请注意,some_array[-1]返回最后一个元素,some_array这样您就不必做some_array[len(sum_array) - 1]

于 2013-07-28T23:00:43.503 回答