我有以下列表作为示例:
a = ['#12908069', '#12906115', '#12904949', '#12904654', '#12904288', '#12903553']
b = ['85028,', '83646,', '77015,', '90011,', '91902,', '80203,']
c = ['9.09', '9.09', '1.81', '3.62', '1.81', '1.81', '9.09', '9.09', '1.81', '3.62', '1.81', '1.81']
d = ['Zone 3', 'Zone 3', 'Zone 2']
Run Code Online (Sandbox Code Playgroud)
我希望将其作为输出实现,将第一个项目集压缩为示例:
[('#12908069', '85028', (9.09, 9.09), 'Zone 3'), ...]
Run Code Online (Sandbox Code Playgroud)
如何zip()从列表中为每个元组添加额外的项目c?
Jac*_*cik 11
您可以使用步长为2的列表切片,请参阅说明Python的切片表示法:
list(zip(a,b,zip(c[0::2],c[1::2]),d))
Run Code Online (Sandbox Code Playgroud)
使用成语将数据系列从zip文档聚类为n长度组:
>>> gr = [iter(c)]*2
>>> list(zip(a, b, zip(*gr), d))
[('#12908069', '85028,', ('9.09', '9.09'), 'Zone 3'),
('#12906115', '83646,', ('1.81', '3.62'), 'Zone 3'),
('#12904949', '77015,', ('1.81', '1.81'), 'Zone 2')]
Run Code Online (Sandbox Code Playgroud)
实质上,为了从列表中获取两个连续的元素,c我们在列表中放置了相同的迭代器,它gr由两个元素组成.
然后我们将这些相同的迭代器传递给zip(解压缩列表,就好像我们已经将两个迭代器作为两个独立的参数传递给它).
这具有从列表中收集每两个连续元素的效果c.
然后我们将这样的zip和其他列表再次拉链以扫描并配对整个批次.
| 归档时间: |
|
| 查看次数: |
5075 次 |
| 最近记录: |