一、列表、元组和字符串切片
列表的索引与切片
字符串、元组和列表中从最左边记录的位置就是索引,索引用数字表示,从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) 复制代码