列表中的每个元素都有两个整数类型的索引:
1.第一个元素索引是0,后面的元素索引依次递增1;
2.最后一个元素索引是-1,前面元素索引依次递减1;
如下图:
获得列表中指定元素的索引:
(1)如果列表中想要获得指定元素的索引,可以调用方法index,该方法只返回两个整数索引中大于0的索引值。
#代码演示L = [5, 3, 7, 9, 2, 1, 7, 6] #创建变量名为L的列表print(L.index(9)) #3 查找L列表中 元素9的索引为3
(2)如果列表中存在多个指定元素,方法index只返回第1个指定元素的索引值。
#代码演示L = [5, 3, 7, 9, 2, 1, 7, 6] #创建变量名为L的列表print(L.index(7)) #2 L列表中有2个为7的元素,index方法只返回了列表中第一个7的元素索引值2.
(3)如果列表中不存在指定的元素,方法index会报错:ValueError: 8 is not in list
#代码演示L = [5, 3, 7, 9, 2, 1, 7, 6] #创建变量名为L的列表pint(L.index(8)) #ValueError: 8 is not in list
(4)调用方法index时还可以指定索引start参数和stop参数(可以只指定start参数,不能只指定stop参数)
#代码演示L = [5, 3, 7, 9, 2, 1, 7, 6] #创建变量名为L的列表 print(L.index(7, 3)) #6 在L列表中指定索引值为3开始后的列表中查询7的索引值。 print(L.index(7, 3, 5)) #ValueError: 7 is not in list 在L列表中指定索引值为3开始到5的列表查询没有7元素
使用索引获得列表中的元素,一次只获得一个元素
#代码演示L = [5, 3, 9, 4, 0, 6, 8, 1, 7, 2] #创建一个变量名为L的列表 >>>print(L[0]) #5 获得列表中元素5 >>> print(L[5]) #6 获得列表中元素6 >>> print(L[-4]) #8 获得列表中元素8 >>> print(L[8]) #7 获得列表中元素7 >>> print(L[-1]) #2 获得列表中元素 2
如果指定索引不在列表中,会抛出IndexError
#代码演示L = [5, 3, 9, 4, 0, 6, 8, 1, 7, 2] #创建一个变量名为L的列表 >>>print(L[10]) #IndexError: list index out of range 报错了
使用切片获得列表中的元素,一次可以获得多个元素。切片语法格式:[start:stop:step]
- 切片得到结果仍是列表,是原始列表的片段的一份拷贝。
- 切片得到的结果不包含索引stop参数。
- 如果不指定step参数,其默认值是1,此时语法格式可以简化为:[start:stop].
- 当step参数为正数时:
- 如果不指定start参数,切片的第一个元素默认是列表的第一个元素。
- 如果不指定stop参数,切片的最后一个元素默认是列表的最后一个元素。
- 从索引start参数往后计算切片。
- 当step参数为负数时:
- 如果不指定start参数,切片的第一个元素默认是列表的最后一个元素。
- 如果不指定stop参数,切片最后的一个元素默认是列表的第一个元素。
- 从索引sart参数往前计算切片。
#代码演示 L = [5, 3, 9, 4, 0, 6, 8, 1, 7, 2] #创建一个变量名为L的列表 >>> print(L[1:7:2]) #[3, 4, 6]>>> print(L[1:7]) #[3, 9, 4, 0, 6, 8]>>> print(L[::]) #[5, 3, 9, 4, 0, 6, 8, 1, 7, 2] 不指定start参数,stop参数,step参数,切片结果默认取整个列表>>> print(L[::-1]) #[2, 7, 1, 8, 6, 0, 4, 9, 3, 5] 不指定start参数及stop参数,指定step参数为-1 切片结果取整个列表逆序>>> print(L[6:0: -2]) #[8, 0, 9]>>> print(L[0:6:-2]) #[]>>> print(L[:5:-2]) #[2, 1]
6.切片操作允许越界:
#代码演示 L = [5, 3, 9, 4, 0, 6, 8, 1, 7, 2] #创建一个变量名为L的列表 print(L[:100]) #[5, 3, 9, 4, 0, 6, 8, 1, 7, 2] 切片越界,默认取整表 print(L[-100:]) #[5, 3, 9, 4, 0, 6, 8, 1, 7, 2] 切片越界,默认取整表
使用内置函数slice(类slice的构造方法)创建slice类型对象。调用slice内置函数有三种方式:
- slice(stop)
- slice(start, stop)
- slice(start, stop, step)
- slice函数的start参数,stop参数,step参数默认值都是None
- [slice(start, stop, step)] 与切片方法[start:stop:step]是等价的。
#举例比较slice方法及切片方法L = [5, 3, 9, 4, 0, 6, 8, 1, 7, 2] #创建一个变量名为L的列表>>> print(L[1:7:2]) #[3, 4, 6]>>> print(L[slice(1,7,2)]) #[3, 4, 6]>>> print(L[::]) #[5, 3, 9, 4, 0, 6, 8, 1, 7, 2]>>> print(L[slice(None, None, None)]) #[5, 3, 9, 4, 0, 6, 8, 1, 7, 2]>>> print(L[1:7:]) #[3, 9, 4, 0, 6, 8]>>> print(L[slice(1,7,None)]) #[3, 9, 4, 0, 6, 8]>>> print(L[1:7]) #[3, 9, 4, 0, 6, 8]>>> print(L[slice(1,7)]) #[3, 9, 4, 0, 6, 8]>>> print(L[:7:]) #[5, 3, 9, 4, 0, 6, 8]>>> print(L[slice(None, 7, None)]) #[5, 3, 9, 4, 0, 6, 8]
列表的“查”操作是使用运算符in监测是否存在指定元素
- 使用运算符in(not in)检查列表中是否存在(不存在)指定元素。
- 对于in,如果存在,结果返回True;如果不存在,返回False。
- 对于not in 如果存在,结果返回False;如果不存在,结果返回True。
#代码演示L = [3, 4, 5, 6, 7]>>> print(5 in L) #True>>> print(7 in L) #True>>> print(10 in L) #False>>> print(10 not in L) #True>>> print(7 not in L) #False