这里有两个看似等效的函数版本,用于从数字列表中过滤出素数。
版本 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 返回错误的结果。为什么?