每日10行代码53:编写高质量python代码方法5——了解切割序列(分片)的方法

本文介绍了Python中列表切片的使用方法,包括起始和结束索引的设定,以及切片赋值来更新列表内容。强调了切片操作不会因索引越界而引发错误,可用于限制序列长度,并探讨了如何通过切片创建列表副本。同时,展示了对列表单个元素访问的边界条件。最后,展示了切片在列表更新中的灵活性,如不同长度元素的替换。
摘要由CSDN通过智能技术生成

今天继续看effective python第5章

# 切片可以在list,str,bytes上进行切割,用法是 somelist[start:end]  其中start(起始索引)所指的元素涵盖在切割范围中,而end(结束索引)所指的元素不在切割范围中。
a = ['a', 'b','c', 'd', 'e', 'f', 'g', 'h']
print('First four:', a[:4])
print('Last four:', a[-4:])
print('Middle two:', a[3:-3])

# 如果从列表开头获取切片,那就不要在start那里写上0,而是应该把它留空,如果一直取到末尾,就应该把end留空。
assert a[:5] == a[0:5]
assert a[5:] == a[5:len(a)]

# 如果要从列表尾部向前算,可以使用负值来表示相关偏移量
print(a[:])
print(a[-3:-1])
print(a[1:-1])

# 切割列表时,即便start和end索引越界也不会出问题。利用这一点,可以限定输入序列的最大长度。
first_twenty_items = a[:20]
last_twenty_items = a[-20:]

# 但是在访问列表中的单个元素时,下标不能越界。
#print(a[20])  # 这个会报错

# 可以通过对切片附值的形式来更新列表
print('before', a)
a[2:7] = [99, 22, 16]
print('after', a)
# 上面的代码把2,3,4,5,6 号元素赋值为 99,22,16 ,自动的从5个元素变成了3个元素。
# 特殊的,如果有a[:]=[99,22,16] 那么会把a的所有元素替换成99,22,16,系统不会新建列表

# 如果把切片的索引都留空,那么可以产生一份原列表的拷贝
b = a[:]
assert b == a and b is not a

要点:

  1. 不要写多余的代码:当start索引为0,或end索引为序列长度时,应该将其省略。
  2. 切片操作不会计较start与end索引是否越界,这使得我们很容易就能从序列的前端或后端开始,对其进行范围固定的切片操作(如a[:20]或a[-20:])
  3. 对list赋值的时候,如果使用切片操作,就会把原列表中处在相关范围内的值替换成新值,即便它们的长度不同也依然可以替换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值