gpt4 book ai didi

Python 使用 map() 遍历列表中的列表

转载 作者:太空宇宙 更新时间:2023-11-03 12:22:59 25 4
gpt4 key购买 nike

所以我的意图是用 map、filter 和 lambda 迭代列表中的列表例如:

[ [33,3,3,0] , [34,1,0,4] ] should result in [ [33,3,3] , [34,1,4] ]

   def no_zeros(lst):
a=map(filter(lambda x:(y==0 for y in x) ,lst),lst)
print (list(a))
#(says that filter is not callable)

我知道这段代码行不通,但我不知道我到底做错了什么,因为我对 lambda 还是个新手,等等。我已经尝试过不同的东西,比如在 lambda 之后移动过滤器,但是那似乎也不起作用。我很感激任何类型的提示或帮助。

最佳答案

map 将第一个参数中的函数应用于第二个参数。它会尝试调用您的 filter 对象...

固定版本是:

list(map(lambda z: list(filter(None,z)),lst))

(即使它产生了预期的结果仍然不是很清楚......我花了 3 或 4 次尝试通过试验和错误来获得正确的结果,并且 filter & map 需要在 Python 3 中迭代,这无济于事,而且会扼杀关于那些时髦关键字的整个炒作)

lambda/map/filter 复杂性的这一点上,您最好使用列表理解:

lst = [ [33,3,3,0] , [34,1,0,4] ]

result = [ [x for x in sl if x] for sl in lst]

print(result)

结果:

[[33, 3, 3], [34, 1, 4]]

关于Python 使用 map() 遍历列表中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47714423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com