Python程序教程

您现在的位置是:首页 >  python编程

当前栏目

Python 编程 | 连载 09 - 列表、元组和字符串切片

Python,编程,连载,09,列表,元组,字符串,切片
2025-03-13 21:27:22 时间

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情

一、列表、元组和字符串切片

列表的索引与切片

字符串、元组和列表中从最左边记录的位置就是索引,索引用数字表示,从0开始

索引从0开始,所以最大索引为长度-1

索引是用来对单个元素进行访问,切片则是对一定反问的元素进行访问,切片通过冒号在中括号内把相隔的两个索引查找出来,切片的规则为左含右不含

nums = [1, 2, 3, 4, 5, 6, 7]

print('nums列表的最大索引是:{}'.format(len(nums) - 1))
print('索引4位置的元素是:{}'.format(nums[4]))

print('获取完整的nums列表:',nums[:])
print('第二种方法获取完整列表:',nums[0:])
print('获取除最后一个元素外的列表:', nums[:-1])

切片起始索引默认是0,并包含索引0的元素

nums = [1, 2, 3, 4, 5, 6, 7]

new_entire_nums = nums[:]
print('原列表的id:', id(nums))
print('新列表的id:', id(new_entire_nums))

切片获取的列表id与原列表不同,切片会生成一个新的列表

nums = [1, 2, 3, 4, 5, 6, 7]

print(nums[-3:-1])
print(nums[-7:-1])
print(nums[-7:6])

列表中索引从右往左是从-1开始,依次为-2、-3.....

使用[]进行切片除了传入两个索引外,还可以传入第三个值既步长,步长默认为1,也就是从左往右依次的获取,如果索引为负数,就是从右往左按照步长的长度获取

nums = [1, 2, 3, 4, 5, 6, 7]

print(nums[-3:-1])
print(nums[-7:-1:3])
print(nums[-7:6:2])
print(nums[6:-7:-2])

列表索引的获取

列表中可以通过list[index]=new_item来修改元素,数据的修改只能在存在的索引范围内,列表无法通过添加新的索引的方式赋值。

index函数可以获取元素在列表中的索引

heros = ['stark', 'peter', 'banner', 'thor', 'loki']

idx_01 = heros.index('banner')
print('banner在列表中的索引是:', idx_01)

idx_02 = heros.index('wanda')
print('wanda在列表中的索引是:', idx_02)

查找的元素在列表中不存在时会报错

# 索引修改元素
heros = ['stark', 'peter', 'banner', 'thor', 'loki']
heros[2] = 'wanda'
print(heros)
heros[-1] = 'clint'
print(heros)
# 切片方式修改
heros[1:3] = 'hulk', 'wonder woman'
print(heros)
heros[1:3:2] = ['Captain']
print(heros)

元组切片

  • 元组可以和列表一样通过索引获取元素和进行切片操作
  • 元组的index函数和列表的index函数用法完全一致
  • 元组无法通过索引修改和删除元素,因为元组是不可变数据类型
heros_tuple = ('stark', 'peter', 'banner', 'thor', 'loki')

peter = heros_tuple[1]
print('索引位置为1的元素是:',peter)

new_heros = heros_tuple[:]
new_heros_01 = heros_tuple[0:]
new_herso_02 = heros_tuple[:-1]
new_heros_03 = heros_tuple[::2]
new_heros_04 = heros_tuple[::-2]

print(new_heros)
print(new_heros_01)
print(new_herso_02)
print(new_heros_03)
print(new_heros_04)

字符串的索引与切片

字符串的索引规则与列表的索引规则一致

  • 切片和索引的获取与列表相同
  • 无法通过索引修改与删除元素
  • 字符串不可修改

find函数也可以获取字符在字符串中索引的位置,index函数也可以获取字符在字符串中索引的位置,当元素不存在时find函数返回-1,index函数则会报错

info = '上海昨日新增无症状5298例'

index_01 = info.index('上海')
print(index_01)

index_02 = info.index('昨日')
print(index_02)

find_01 = info.find('5298')
print(find_01)

find_02 = info.find('背景')
print(find_02)

index_03 = info.index('背景')
print(index_03)