[英]Python - slice a list of list
我认为它叫做切片......
基本上我有一个列表清单:
[['fmt/10', 3L, 5L, Decimal('9500')],
['fmt/353', 1L, 1L, Decimal('500')],
['fmt/7', 3L, 5L, Decimal('9500')],
['fmt/8', 3L, 5L, Decimal('9500')],
['fmt/9', 3L, 5L, Decimal('9500')]]
我想拉出4个新列表,全部位于[0],[1],[2]和[3]位置。
所以如果看起来像:
A = ['fmt/10', 'fmt/353','fmt/7','fmt/8','fmt/9']
B = [3,1,3,3,3]
C = [5,1,5,5,5]
D = [9500,500,9500,9500,9500]
什么是实现这一目标的最简单方法? 从阅读中我想我想使用'zip',但我不确定它是如何工作的。
L = [['fmt/10', 3L, 5L, Decimal('9500')],
['fmt/353', 1L, 1L, Decimal('500')],
['fmt/7', 3L, 5L, Decimal('9500')],
['fmt/8', 3L, 5L, Decimal('9500')],
['fmt/9', 3L, 5L, Decimal('9500')]]
zip(*L)
(用于解压缩列表的星号)将给出:
[('fmt/10', 'fmt/353', 'fmt/7', 'fmt/8', 'fmt/9'),
(3L, 1L, 3L, 3L, 3L),
(5L, 1L, 5L, 5L, 5L),
(Decimal('9500'), Decimal('500'), Decimal('9500'), Decimal('9500'), Decimal('9500'))]
并且您可以使用解构分配:
A, B, C, D = zip(*L)
A, B, C, D = apply(zip, [['fmt/10', 3L, 5L, Decimal('9500')],
['fmt/353', 1L, 1L, Decimal('500')],
['fmt/7', 3L, 5L, Decimal('9500')],
['fmt/8', 3L, 5L, Decimal('9500')],
['fmt/9', 3L, 5L, Decimal('9500')]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.