I got an issue when using filter-function in for loop. 2 cases are similar, but the result is different:
nums = list(range(1, 15))
nums = filter(lambda x: x % 2 == 0, nums)
nums = filter(lambda x: x % 3 == 0, nums)
nums = filter(lambda x: x % 4 == 0, nums)
print(list(nums))
>>> [12]
and
nums = list(range(1, 15))
for i in range(2, 5):
nums = filter(lambda x: x % i == 0, nums)
print(list(nums))
>>> [4, 8, 12]
If I convert filter-object to list, the result is correct.
nums = list(range(1, 15))
for i in range(2, 5):
nums = list(filter(lambda x: x % i == 0, nums))
print(nums)
>>> [12]
Is there any solution using for loop without converting filter object to list in this case?
nums = filter(lambda x, i=i: x % i == 0, nums)