我认为它叫做切片......
基本上我有一个列表清单:
[['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')]]
我希望在位置[0],[1],[2]和[3]中提取4个新列表。
所以如果看起来像:
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',但我不确定它是如何工作的。
答案 0 :(得分:11)
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)
答案 1 :(得分:1)
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')]])