Python - 仅压缩包含数据的列表

标签 python list python-3.x zip

我有一个脚本可以将数据从一种类型转换为另一种类型。 源文件可以包含以下一项、两项或全部:位置、旋转和缩放数据。

在对输出文件进行转换后,我的脚本将这 3 个文件压缩在一起。

在这种情况下,我的源文件只包含位置数据。 所以最后返回的列表是:

pData = [['-300.2', '600.5'],['150.12', '280.7'],['19.19', '286.56']]
rData = []
sData = []

translationData = list(zip(pData, rData, sData))

如果我尝试这样做,它将返回 [],因为最短列表是 []。 如果我尝试:

translationData = list(zip_longest(pData, rData, sData))

我得到:

`[(['-300.2', '600.5'], None, None), (['150.12', '280.7'], None, None), (['19.19', '286.56'], None, None)]`

有没有办法只压缩包含数据的列表,或者从列表中的元组中删除 None

提前致谢!

最佳答案

您可以使用 filter内置嵌入列表组件中。

Note: In Python 3 filter returns an iterator, so you will need to call tuple() on it. (unlike in py2)

pData = [['-300.2', '600.5'],['150.12', '280.7'],['19.19', '286.56']]
rData = []
sData = []

from itertools import zip_longest  # izip_longest for python 2
[tuple(filter(None, col)) for col in zip_longest(pData, rData, sData)]

结果:

[(['-300.2', '600.5'],), (['150.12', '280.7'],), (['19.19', '286.56'],)]

关于Python - 仅压缩包含数据的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35042162/

相关文章:

python - 两两相关

python - 如何生成同时将某些字符串转换为 float 的 Python 字典?

python - 为什么不能在 f 弦的大括号内使用反斜杠?我该如何解决这个问题?

jQuery 复选框值以逗号分隔列表

vb.net - 如何使用 Linq 从 List(Of T) 中获取不同值

python - TypeError : write() argument must be str, 不是字节,升级到 python 3

regex - 用于句子中介词的 Python 正则表达式

python - 使用 python setuptools 创建 Windows 可执行文件

python - 合并一个数据帧中与另一数据帧中的特定列不匹配的行 Python Pandas

python - 有没有办法制作一个列表,计算列表中不同元素的不同变量的出现次数?