0

有没有办法在不使用:if 的情况下检查列表中的偶数?

这是我在使用 if 时所拥有的:

import numbers

numbers = [ 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,
           16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]

def even_list(numbers):
for i in range(len(numbers)):
    if i % 2 == 0:
    #while i !=(i / 2):
        print(i)
return i

numbers = even_list(numbers)

现在从逻辑上讲这是有道理的,但我不知道除了 if 之外的任何其他方式。如您所见,我尝试在那里使用while,并且程序在运行时继续循环1。关于如何解决这个问题的任何想法?

4

2 回答 2

4

您可以使用两个列表,一个用于偶数,一个用于赔率:

evens = []
odds = []
out = [evens,odds]
for elem in numbers:
    out[elem%2].append(elem)

print evens

或者你可以结束:

for even in evens:
    print even

模拟您当前拥有的相同输出风格。

于 2013-03-01T00:19:23.993 回答
2

def even(numbers):
   return filter(lambda n:n%2==0,numbers)

或麻木的

import numpy
a = numpy.arange(100)
print a[a%2==0]

或集合操作(​​我认为唯一不使用条件的操作......但您需要了解集合,否则您可能无法获得预期的行为,或者它可能不适用于您的数据集)

def evens(numbers):
    all_evens = set(range(0,max(numbers),2)
    return all_evens.intersection(numbers)

另一种检查均匀度的方法是

not my_test_number&1 

(我怀疑这个检查比 快i%2,但不确定)

于 2013-03-01T00:19:55.247 回答