⭐️ 什么是索引?
- 哪些数据类型里有索引的概念? ---> 字符串、列表、元组
- 从最左边记录的位置开始就是索引
- 索引用数字表示,起始位是从
0
开始 - 字符串、列表、元组的最大索引是他们的长度 - 1
示例如下:
代码语言:python代码运行次数:0复制names = ['Neo', 'Jack', 'Adem']
print(names[0]) # >>> Neo
print(names[-1]) # >>> Adem
print(names[5]) # IndexError: list index out of range 没有索引为5的元素,所以报错
⭐️ 什么是切片?
- 索引用来对单个成员(元素)进行访问,切片则是对一定范围内的成员(元素)进行访问
- 切片通过冒号的方式在中括号内把相隔的两个索引位置范围内的成员(元素)找出来,如
[0:10]
- 切片的规则:左含,右不含; 左边包含,右边不包含
- 通过切片方式获取的完整的列表已经不再是原来的列表了,即使获取的是原来列表的完整的内容
示例如下:
代码语言:python代码运行次数:0复制num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(num_list[3:7])
# 执行结果如下:
# >>> [4, 5, 6, 7]
获取列表的完整内容如下:
代码语言:python代码运行次数:0复制names = ['Neo', 'Jack', 'Adem']
print('names 列表完整的内容是:', names[:])
print('names 列表完整的内容是:', names[0:])
# 执行结果如下:
# >>> names 列表完整的内容是: ['Neo', 'Jack', 'Adem']
# >>> names 列表完整的内容是: ['Neo', 'Jack', 'Adem']
通过切片方式获取的完整的列表已经不再是原来的列表了,即使获取的是原来列表的完整的内容,示例如下:
代码语言:python代码运行次数:0复制names = ['Neo', 'Jack', 'Adem', 'Lily']
print(''names' 列表的内存地址为:', id(names))
print('索引获取的完整'names' 列表的内存地址为:', id(names[0:]))
# 执行结果如下:
# >>> 'names' 列表的内存地址为: 140522949689152
# >>> 索引获取的完整'names' 列表的内存地址为: 140522949686656
反序获取列表成员(元素),示例如下:
代码语言:python代码运行次数:0复制num_list = [1, 2, 3, 4, 5, 6, 7, 8]
print(num_list[::-1]) # 列表的反序
print(num_list[-3:-1]) # 列表的反向获取
print(num_list[0:8:2]) # 列表的步长获取:【每隔2步长(也可以理解为每两个数值)获取索引0到8的元素】
# 执行结果如下:
# >>> [8, 7, 6, 5, 4, 3, 2, 1]
# >>> [6, 7]
# >>> [1, 3, 5, 7]
切片生成空列表,示例如下:
代码语言:python代码运行次数:0复制num_list = [1, 2, 3, 4, 5, 6, 7, 8]
print(num_list[0:0])
# 执行结果如下:
# >>> []