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

标签 python lambda filter

所以我的意图是用 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/

相关文章:

python - 有没有办法在我对 Django 模型进行每次更改后自动重新启动 python 进程?

python - 如何根据条件为每个 id 分配二进制值

c# - .NET Framework 支持空操作语法或单例

Java 8 - 使用 BiPredicate 进行过滤

python - 如何循环实现airflow DAG

python - 针对 Web 和移动客户端的 Web 服务技术的建议

python - 在 Pandas 中转换日期时间列的快速方法

ios - 使用多个过滤器从 Firebase 查询数据

arrays - 快速比较数组内的连续数字及其计数

python - 简化 Python 中的列表过滤器