软件测试学习 之 Python 字符串切片(slice notation)

这篇博客探讨了Python字符串的正向和逆向索引,以及切片操作。通过示例展示了如何使用切片获取指定位置的字符,并解释了切片中步长对截取方向的影响。同时,文章指出正向切片和反向切片时起始和末尾相对位置的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符串的索引分为两种,正向和逆向,可以分别通过两种索引获取指定位置字符

# 定义字符串并获取长度
num_str = "0123456789"
len_int = len(num_str)
# 字符串每个字符的索引有两种:正下标(0开始),负下标(-1开始)
# 正向[0,len_int-1],反向[-len_int,-1],下标范围为-len_int到len_int-1
# 长度为10的字符串,正向[0,9],反向[-10,-1],下表范围[-10,9],

# 首位的下标正向时为0,逆向时为-len_int
print(num_str[0])
print(num_str[-len_int])
# 索引低于-len_int报错
# print(num_str[-len_int - 1])
print()

# 末尾的下标正向时为len_int-1,逆向时为-1
print(num_str[len_int - 1])
print(num_str[-1])
# 索引高于len-1报错
# print(num_str[len_int])
print()

输出结果:

0
0

9
9

 

切片中的步长会影响切片的方向,步长为负时,切片会从后往前截取

代码如下:

# 切片的格式为[i:j:s]
# s缺省值为1
# 当s=0,报错
# print(num_str[::0])

# 当s>0(包括缺省值1),表示正向切片
# i缺省值为0,即 num_str[:3]相当于num_str[0:3]
# j缺省值为len(num_str), 即num_str[1:]相当于num_str[1:10]
# 当i,j都缺省时,[:]就相当于完整复制一份num_str了
# 两边缺省
print(num_str[:])
# 右边缺省
print(num_str[0:])
print(num_str[-len_int:])
# 左边缺省
print(num_str[:len_int])
print()

# 当s<0,表示反向切片
# i缺省值为-1,即 num_str[:3,-1]相当于num_str[-1:3,-1]
# j缺省值为-len(num_str)-1, 即num_str[1::-1]相当于num_str[1:-11:-1]
# 当i,j都缺省时,[::-1]就相当于反转字符串了
# 两边缺省
print(num_str[::-1])
# 右边缺省
print(num_str[-1::-1])
print(num_str[len_int-1::-1])
# 左边缺省
print(num_str[:-len_int-1:-1])
print()

输出结果:

0123456789
0123456789
0123456789
0123456789

9876543210
9876543210
9876543210
9876543210

 

正向切片时,起始和末尾的相对位置与字符实际所在位置一致

反向切片时,起始和末尾的相对位置与字符实际位置正好相反

代码如下:


# 结论:
# 1.i和j只是标识起始位和末位,没有大小之分(可正可负)
# 2.s代表切片的方向,
# s>0表示正向,字符串num_str[i]在num_str[j]之前,否则最多只能截取到正向末尾字符(9)
# s<0表示逆向,字符串num_str[i]在num_str[j]之后,否则最多只能截取到逆向末尾字符(0)
print(num_str[len_int-1:])
print(num_str[-1:])
print(num_str[5:5])
print(num_str[5:4])
print()
print(num_str[-len_int::-1])
print(num_str[0::-1])
print(num_str[5:5:-1])
print(num_str[5:6:-1])
print()

输出结果:

9
9



0
0



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值