1.什么是索引?
1)都有哪些数据类型里有索引的概念?
字符串,列表和元组。
2)从最左边记录的位置就是索引。
3)索引用数字表示,起始从0开始。

4)字符串,列表和元组的最大索引是它们的长度-1。
通过len函数获取到它们的长度,减1,就是它们的最大索引。
例1:
I = ['name']
print(I[0])
运行结果: name
例2:
I = ['name']
print(I[1])
运行结果:
/Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_list/1.py
Traceback (most recent call last):
File "/Users/llq/PycharmProjects/pythonlearn/python_list/1.py", line 2, in <module>
print(I[1])
IndexError: list index out of range
进程已结束,退出代码为 1
2.什么是切片?
1)索引用来对单个元素进行访问,切片则对一定范围内的元素进行访问。
2)切片通过冒号在中括号内把相隔的两个索引查找出来。
[0:10]
就是说,获取一个列表中从0到10的索引。
3)切片规则:左含,右不含。
numbers = [1,2,3,4,5,6,7,8,9,10]
print(numbers[3:8])
运行结果: [4, 5, 6, 7, 8]
3.代码
例1:中括号内只打一个冒号,什么都不加,会返回这个列表完整的数据。
# coding:utf-8
numbers = [1,2,3,4,5,6,7,8,9,10]
print(len(numbers)-1)
print(numbers[9])
print(numbers[:])
运行结果:
/Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_list/list_index.py
9
10
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
进程已结束,退出代码为 0
[:]
这个什么都没有填写,左边这个数值默认就是0,右边默认就是最大。
例2:另一种获取完整列表的方法。
# coding:utf-8
numbers = [1,2,3,4,5,6,7,8,9,10]
print(len(numbers)-1)
print(numbers[9])
print('获取列表完整数据:',numbers[:])
print('另一种获取完整列表的方法:',numbers[0:])
运行结果:
/Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_list/list_index.py
9
10
获取列表完整数据: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
另一种获取完整列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
进程已结束,退出代码为 0
例3:注意:通过切片的方式,获取到的这个列表,已经不是原来这个列表了。
即便通过[:]
这个形式,获取到了完整的列表内容,它们两个是不同的。
# coding:utf-8
numbers = [1,2,3,4,5,6,7,8,9,10]
print(len(numbers)-1)
print(numbers[9])
print(id(numbers))
print('获取列表完整数据:',id(numbers[:]))
print('另一种获取完整列表的方法:',numbers[0:])
print('第三种获取列表的方法:',numbers[0:-1])
运行结果:
/Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_list/list_index.py
9
10
4314324160
获取列表完整数据: 4314324224
另一种获取完整列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
第三种获取列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9]
进程已结束,退出代码为 0
两个id地址是不同的,通过索引生成的这个列表,是一个新的变量值。而不是原有的列表。
例4:列表的反序。
# coding:utf-8
numbers = [1,2,3,4,5,6,7,8,9,10]
print(len(numbers)-1)
print(numbers[9])
print(id(numbers))
print('获取列表完整数据:',numbers[:])
print('另一种获取完整列表的方法:',numbers[0:])
print('第三种获取列表的方法:',numbers[0:-1])
print('列表的反序:',numbers[::-1])
运行结果:
/Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_list/list_index.py
9
10
4303166656
获取列表完整数据: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
另一种获取完整列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
第三种获取列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9]
列表的反序: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
进程已结束,退出代码为 0
例5:列表的反向获取。
# coding:utf-8
numbers = [1,2,3,4,5,6,7,8,9,10]
print(len(numbers)-1)
print(numbers[9])
print(id(numbers))
print('获取列表完整数据:',numbers[:])
print('另一种获取完整列表的方法:',numbers[0:])
print('第三种获取列表的方法:',numbers[0:-1])
print('列表的反序:',numbers[::-1])
print('列表的反向获取',numbers[-3:-1])
运行结果:
/Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_list/list_index.py
9
10
4381886976
获取列表完整数据: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
另一种获取完整列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
第三种获取列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9]
列表的反序: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
列表的反向获取 [8, 9]
进程已结束,退出代码为 0
例6:通过步长获取切片。设置每2个数值获取一次。
# coding:utf-8
numbers = [1,2,3,4,5,6,7,8,9,10]
print(len(numbers)-1)
print(numbers[9])
print(id(numbers))
print('获取列表完整数据:',numbers[:])
print('另一种获取完整列表的方法:',numbers[0:])
print('第三种获取列表的方法:',numbers[0:-1])
print('列表的反序:',numbers[::-1])
print('列表的反向获取',numbers[-3:-1])
print('步长获取切片',numbers[0:8:2])
运行结果:
/Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_list/list_index.py
9
10
4365737152
获取列表完整数据: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
另一种获取完整列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
第三种获取列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9]
列表的反序: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
列表的反向获取 [8, 9]
步长获取切片 [1, 3, 5, 7]
进程已结束,退出代码为 0
例7:生成一个新的空列表。
# coding:utf-8
numbers = [1,2,3,4,5,6,7,8,9,10]
print(len(numbers)-1)
print(numbers[9])
print(id(numbers))
print('获取列表完整数据:',numbers[:])
print('另一种获取完整列表的方法:',numbers[0:])
print('第三种获取列表的方法:',numbers[0:-1])
print('列表的反序:',numbers[::-1])
print('列表的反向获取:',numbers[-3:-1])
print('步长获取切片:',numbers[0:8:2])
print('切片生成空列表:',numbers[0:0])
运行结果:
/Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_list/list_index.py
9
10
4342570176
获取列表完整数据: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
另一种获取完整列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
第三种获取列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9]
列表的反序: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
列表的反向获取: [8, 9]
步长获取切片: [1, 3, 5, 7]
切片生成空列表: []
进程已结束,退出代码为 0
例8:也可以把这些索引赋给一个新的变量。
# coding:utf-8
numbers = [1,2,3,4,5,6,7,8,9,10]
print(len(numbers)-1)
print(numbers[9])
print(id(numbers))
print('获取列表完整数据:',numbers[:])
print('另一种获取完整列表的方法:',numbers[0:])
print('第三种获取列表的方法:',numbers[0:-1])
print('列表的反序:',numbers[::-1])
print('列表的反向获取:',numbers[-3:-1])
print('步长获取切片:',numbers[0:8:2])
print('切片生成空列表:',numbers[0:0])
new_numbers = numbers[:4]
print(new_numbers)
运行结果:
/Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_list/list_index.py
9
10
4334918848
获取列表完整数据: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
另一种获取完整列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
第三种获取列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9]
列表的反序: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
列表的反向获取: [8, 9]
步长获取切片: [1, 3, 5, 7]
切片生成空列表: []
[1, 2, 3, 4]
进程已结束,退出代码为 0
成功返回了这个新的列表。