python 在一个列表中找到奇数,并使用lambda函数求平方

ztigrdn8  于 2022-12-21  发布在  Python
关注(0)|答案(5)|浏览(201)

这是我目前为止得到的代码,现在输出为[1, 3, 5, 7, 9]

N = 10
for i in range(1, 10):
    arr.append(i)

arr2 = []
f = lambda x: x ** 2
arr2 = filter(lambda x: x % 2 != 0, arr)
map(lambda x: x ** 2, arr2)
print(list(arr2))```
j8ag8udp

j8ag8udp1#

最后一个for循环将lambda函数应用于列表中的元素,但不保存结果。

a = [i for i in range(1,10)]
a2 = filter(lambda x: x % 2 != 0, a)
a3 = map(lambda x: x**2, a2)        # This is a generator object
final_list = list(a3)               # This is a list

有关Map过滤器reduce的Python提示

ncgqoxb0

ncgqoxb02#

一旦创建了f(i)的结果,你就丢弃了它,你需要把它添加到某个列表中(同样,也不需要把filter对象消耗到列表中):

result = []
for i in arr2:
    result.append(f(i))

请注意,根据PEP8,不鼓励将lambda绑定到标识符。
解决这个问题的最好方法是不使用列表解析,而是将filtermap组合起来,如下所示:

arr2 = list(map(lambda x: x ** 2, filter(lambda x: x % 2 != 0, arr)))
cdmah0mi

cdmah0mi3#

这里有一个稍微修改过的版本:

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]
8cdiaqws

8cdiaqws4#

您不是在数组中保存值,而是打印它。

N = 10
for i in range(1, 10):
    arr.append(i)

result = []
f = lambda x: x ** 2
arr2 = filter(lambda x: x % 2 != 0, arr)
for i in arr2:
    result.append(f(i))    
print(result)
mdfafbf1

mdfafbf15#

lst = [1, 2, 3]

ans = list(map(lambda x: x ** 2, filter(lambda x: x % 2 != 0, lst)))

print(ans)

相关问题