python - 按值从多个列表中删除出现的元素(缩短多个列表)

标签 python list python-2.7

假设我有一个列表列表:

[[0,0,0,1,2,3],[0,0,0,4,5,6],[0,0,0,0,7,8],[0,0,0,0,0,9]]

我希望最终得到一个列表,该列表将从该列表中的每个列表中删除常见的空/零/关键字,以产生所需的输出:

[[1,2,3],[4,5,6],[0,7,8],[0,0,9]]

显然,循环遍历该列表中的每个列表,然后将其与所有其他列表进行比较,这超出了理想的答案。谢谢。

最佳答案

如果您对这些子列表进行排序,您会发现最大的子列表包含您需要从所有子列表中删除的零数量。所以只要找到max:

x = [[0,0,0,1,2,3],[0,0,0,4,5,6],[0,0,0,0,7,8],[0,0,0,0,0,9]]

max(x)
Out[2]: [0, 0, 0, 4, 5, 6]

计算出需要删除多少个前导零:

from itertools import takewhile

#needlessly pedantic way of doing this
num_zeroes = len(list(takewhile(lambda p: p == 0, max(x))))

并相应地切片:

[li[num_zeroes:] for li in x]
Out[12]: [[1, 2, 3], [4, 5, 6], [0, 7, 8], [0, 0, 9]]

关于python - 按值从多个列表中删除出现的元素(缩短多个列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25656550/

相关文章:

Python:定义具有依赖属性的类

python - 为什么子进程启动 "extra"应用程序?

python - 在 Python 3.2 中使用 "Counter"

algorithm - Lisp 中的最长递减序列

Python:如何将输出捕获到文本文件? (现在只捕获了 530 行中的 25 行)

python - 有没有办法在单元格内生成没有段落的 html 表格(使用 docutils rst2html)?

c# - 将元素添加到对象列表时出错

c# - 生成施罗德路径

python - 从 NDB 中的 ComputedProperty 函数返回列表的解决方法

Python如何从文件中读取原始二进制文件? (音频/视频/文本)