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

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

# 定义字符串并获取长度
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



猜你喜欢

转载自blog.csdn.net/jian3x/article/details/88778172