列表分片

分片用于截取某个范围内的元素,通过:来指定起始区间(左闭右开区间,包含左侧索引值对应的元素,但不包含右测索引值对应的元素

#注意不包括右边索引值对应的元素,索引下标从0开始
>>> num = [1,2,3,4,5,6,7,8,9,10]
>>> num[3]
4
#输出第四个数字,因为索引是从0开始

>>> num[3:6]
[4, 5, 6]
#注意右边界,左闭右开区间,通过索引值的相减,可得输出三个数字,该数字从第4位开始
>>> num[3:9]
[4, 5, 6, 7, 8, 9]
>>num[-1]   #取最后一个元素
[10]
>>> num[-3:-1]#注意是不包含最后一个元素的
[8, 9]
>>> num[-4:-1]
[7, 8, 9]
>>> num[-10:-1]#同样满足左闭右开区间
[1, 2, 3, 4, 5, 6, 7, 8, 9]

#取包含最后一位数值的切片
>>> num[-5:]
[6, 7, 8, 9, 10]

>>> num[3:-1]
[4, 5, 6, 7, 8, 9]

#取最右3个元素
>>> num[-3:]
[8, 9, 10]

#取最左3个元素
>>> num[:3]
[1, 2, 3]

#可以加入step length,从第1位开始,每隔3个数字取一个
>>> num[1:10:3]
[2, 5, 8]
>>> num[0:10:3]
[1, 4, 7, 10]

#起始位置默认为最左和最右,但不包括最右的元素
>>> num[::2]
[1, 3, 5, 7, 9]
>>> num[0:9:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> num[0:10:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

#如果step length为0,会报错,也就是说**步长不可以为0**
>>> num[1:5:0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: slice step cannot be zero

#如果步长为负数,表示从右向左提取元素
#注意不包括6对应的元素
num[10:6:-1]
[10, 9, 8]

#列表取反
>>> num[10::-1]#或者 num[::-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

#从最左边开始
>>> num[:-3:1] 
[1, 2, 3, 4, 5, 6, 7]
>>> num[:3:1]
[1, 2, 3]
#从最右边开始
>>> num[:3:-1]
[10, 9, 8, 7, 6, 5]

分片包括起始索引对应的元素,但不包括终止索引对应的元素,索引为正值时可以发生越界但只会取到最后一个元素。如果索引值为负值,则表示从最右边元素开始,此时需避免索引越界。

#列表
>>> [1,2,3] + [3,2,1]
[1, 2, 3, 3, 2, 1]
#字符串
>>> 'Hi' + ',' + 'Baby'
'Hi,Baby'
#元组(tuple)
>>> ('This','is','a') + ('test','case')
('This', 'is', 'a', 'test', 'case')
#如果序列类型不一致,则会报错
>>> 'Hi' + [1,2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'list' objects
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值