以下は、数値のリストから素数を除外するための関数の一見同等の 2 つのバージョンです。
バージョン 1
def prime (mylist):
for i in range(2, 8):
return filter(lambda x: x == i or x % i, mylist)
バージョン 2
def prime2 (mylist):
nums = mylist
for i in range(2, 8):
nums = filter(lambda x: x == i or x % i, nums)
return nums
print prime([2,3,4,5,6,7,8,9,10,11,12,13,14,15])
>> [2, 3, 5, 7, 9, 11, 13, 15]
print prime2([2,3,4,5,6,7,8,9,10,11,12,13,14,15])
>> [2, 3, 5, 7, 11, 13]
バージョン 1 は誤った結果を返します。なんで?