Python——切片

python中的 str、tuple、list能用[start:end:step]的形式快速取得所需要的值。

[start,end) 左开右闭 ,例如,[1,2]实际只取第二个元素

需要注意的是,列表切片产生的是列表的副本,与原列表不是同一份空间。

start默认为0,end不填则取值至最后

list=range(100)
list[2:10] #结果[2, 3, 4, 5, 6, 7, 8, 9]

(0,1,2,3,4,5)[:3] #结果(0, 1, 2) 

'abcdefg'[4:6] # 结果'ef'

step表示取值间隔

[0,1,2,3,4,5,6,7,8,9][:10:2] #隔两个数取一个元素[0, 2, 4, 6, 8]

start,end的为负数时,-1指倒数第一个元素,-2为倒数第二个

list=range(100)
list[-10:] #倒数第十个至最后 [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
list[:-80] # 开始至倒数-80个 [0,1,...,19]

step为负值时从右往左取值,start表示的位置应该在end的右边

此时start默认为-1,end默认为0

[0,1,2,3,4,5,6,7,8,9][:-10:-2]  #step为负,从右往左取元素[9, 7, 5, 3, 1] start为-1,
[0,1,2,3,4,5,6,7,8,9][5:9:-2]   #[] start为在end的左边,返回空的list
[0,1,2,3,4,5,6,7,8,9][9:5:-1]  # [9, 8, 7, 6]
[0,1,2,3,4,5,6,7,8,9][5::-1]    # [5, 4, 3, 2, 1, 0]

经典运用,翻转字符串

'abcdef'[::-1] #倒转  'fedcba'

扩展:赋值,删除

list的切片,内部是调用getitemsetitem,delitem和slice函数。而slice函数又是和range()函数相关的。

给切片传递的键是一个特殊的slice对象。该对象拥有可描述所请求切片方位的属性,例如:

>>> list2=[0,1,2,3,4,5,6,7,8,9]
>>> list2[1:3]=['a','a']  
>>> list2
[0, 'a', 'a', 3, 4, 5, 6, 7, 8, 9]
>>> list2[1:0]=['b','b'] #这里的end的值小于start时表示在插入,不覆盖
>>> list2                #在第二个元素(下标1)前插入
[0, 'b', 'b', 'a', 'a', 3, 4, 5, 6, 7, 8, 9]

>>> del list2[3:5]
>>> list2
[0, 'a', 'a', 5, 6, 7, 8, 9]
a = [ 1, 2, 3, 4, 5, 6 ]
x = a [ 1 : 5 ]  # x = a.__getitem__( slice ( 1, 5, None ) )
a [ 1 : 3 ] = [10, 11, 12 ] # a.__setitem__( slice ( 1, 3, None ), [ 10, 11, 12 ] )
del a [ 1 : 4 ]  # a.__delitem__( slice ( 1, 4, None ) )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python切片操作是从一个对象中抽取一部分值的方法。字符串可以使用切片操作来切割、分割和截取,而元组也可以进行切片操作切片操作的一般方式是使用冒号来表示起始位置和结束位置,中括号来表示要提取的部分。例如,对于字符串"ABCDEFG",使用切片操作可以得到"ACEG"。同样地,对于元组(0, 1, 2, 3, 4, 5),使用切片操作可以得到(0, 1, 2)。切片操作还可以应用于其他对象,如字母、整数等。例如,对于字符串"ACDRF",切片操作可以得到"CD"。此外,切片操作还可以使用步长和负数来实现倒序和跳过元素等功能。切片操作可以极大地方便我们对数据进行处理和操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python——切片操作](https://blog.csdn.net/weixin_46169495/article/details/104509108)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Python中的切片(详细篇)学起来喔](https://blog.csdn.net/Zombie_QP/article/details/125063501)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值