Вот очень немного измененная версия:
arr = []
N = 10
for i in range(1, N):
arr.append(i)
arr2 = []
f = lambda x: x ** 2
arr2 = filter(lambda x: x % 2 != 0, arr)
for i in list(arr2):
print(f(i))
arr2
не список. Это итератор , который вы можете преобразовать в список только один раз.
Вот более компактная версия:
N = 10
arr = range(1, N)
square = lambda x: x ** 2
keep_odd = lambda x: x % 2 != 0
arr2 = list(filter(keep_odd, arr))
for i in arr2:
print(square(i))
print(arr2)
Выводит:
1
9
25
49
81
[1, 3, 5, 7, 9]