python列表_Python列表分片与技巧

Python的列表是很常用的数据类型。列表是有序的,因此支持类似Python字符串对象中的大部分操作方式。并且因为列表属于可变数据类型,因此还可以支持原处修改。本文主要关注列表的分片操作。

通过偏移量来获取列表中对应位置的元素是列表最基本的操作:>>> l = range(10)

>>> l

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> l[2]

2

当需要获取列表中的一个子部分,就需要使用分片方法,即通过L[x:y]取得并返回列表L在偏移量x到y之间的一个新列表,如下所示:>>> l[2:8]

[2, 3, 4, 5, 6, 7]

另外,如果偏移量留空,则第一个偏移量默认为列表的头部,第二个默认为末尾:>>> l[:]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

如果这样做,相当于对原列表做一个浅拷贝。

分片实际还接收第三个参数,其代表步长,默认情况下,该值为1。下面将步长改为3:>>> l[::3]

[0, 3, 6, 9]

如果把步长设为负值会有什么效果呢?>>> l[::-1]

[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

是不是很有意思,特别是这里-1的情况相当于反转列表。

接下来来看一个实际的需求。假设有如下列表:>>> l

['one', 1, 'two', 2, 'three', 3, 'four', 4, 'five', 5]

现在我们要创建一个字典,并将以上列表中的元素交替作为键和值。利用刚才分片的技巧可以很方便的做到:>>> l_odd = l[::2]

>>> l_even = l[1::2]

>>> l_odd

['one', 'two', 'three', 'four', 'five']

>>> l_even

[1, 2, 3, 4, 5]

>>> d = dict(zip(l_odd, l_even))

>>> d

{'four': 4, 'three': 3, 'five': 5, 'two': 2, 'one': 1}

分片 + 打包,快速解决问题!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值