繁体   English   中英

Python - 切片列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM