我有一个脚本可以将数据从一种类型转换为另一种类型。 源文件可以包含以下一项、两项或全部:位置、旋转和缩放数据。
在对输出文件进行转换后,我的脚本将这 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 calltuple()
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/