python - 从列表列表中删除所有匹配值
问题描述
我有以下列表对象列表
myList = [[123,0.0,345,0.0,0.0,0.0],
[45,0.0,0.0,0.0],
[67,8,0.0,5,6,7,0.0]
我想从这个列表中删除所有零。
我按照这个问题进行了编码,如下所示。
myList = list(filter(lambda j:j!=0,myList[i]) for i in range(len(myList)))
但是我得到了过滤器对象的列表作为输出。代码中的错误是什么。
[<filter object at 0x7fe7bdfff8d0>, <filter object at 0x7fe7a6eaaf98>, <filter object at 0x7fe7a6f08048>,
解决方案
You forgot to cast the inner filter
function with a list
, when you do that, the code works as expected :)
myList = [[123,0.0,345,0.0,0.0,0.0],
[45,0.0,0.0,0.0],
[67,8,0.0,5,6,7,0.0]]
#Cast inner filter into a list
myList = list(list(filter(lambda j:j!=0,myList[i])) for i in range(len(myList)))
print(myList)
The output will be
[[123, 345], [45], [67, 8, 5, 6, 7]]
Also a simpler way of understanding will be to use a list-comprehension
myList = [[123,0.0,345,0.0,0.0,0.0],
[45,0.0,0.0,0.0],
[67,8,0.0,5,6,7,0.0]]
#Using list comprehension, in the inner loop check if item is non-zero
myList = [ [item for item in li if item != 0] for li in myList ]
print(myList)
The output will be
[[123, 345], [45], [67, 8, 5, 6, 7]]
推荐阅读
- php - 正则表达式前 3 个字母以某种方式表示某事
- ios - 创建子 UIView 的 UIView 正在生成层次约束警告
- python - 编写 Python 脚本来自动化 llvm 代码覆盖率测试
- java - 使用 Kafka-Spark Streaming API 处理流数据时重复
- ios - 如何访问创建的目录?- NSCocoaErrorDomain 代码=257
- javascript - Javascript:数组不保留值
- xml - NetSuite 实时运费计算器调整请求
- deployment - 在 jboss 中部署应用程序时出现 ClassNotFoundException
- c# - 使用 lex.Match 而不是 lex.Autocomplete 时 Redis Lexicographicset 超时错误
- python - Python3:字符串索引必须是整数