0

: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)

論理的にはこれは理にかなっていますが、私はそれ以外の方法を知りません。ご覧のとおり、私はそこにいる間に使用してみましたが、実行するとプログラムはループ1を続けました。これに取り組む方法について何かアイデアはありますか?

4

2 に答える 2

4

2つのリストを使用できます。1つは偶数用、もう1つはオッズ用です。

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)

またはnumpy

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 に答える