Python访问列表值
示例
Python列表是零索引的,并且在其他语言中的作用类似于数组。
lst = [1, 2, 3, 4] lst[0] #1 lst[1] #2
尝试访问列表范围之外的索引将引发IndexError。
lst[4] #IndexError:列表索引超出范围
负索引被解释为从列表的末尾开始计数。
lst[-1] #4 lst[-2] #3 lst[-5] #IndexError:列表索引超出范围
这在功能上等同于
lst[len(lst)-1] #4
列表允许将切片符号用作lst[start:end:step]。切片符号的输出是一个新列表,其中包含从索引start到的元素end-1。如果省略选项,则start默认为列表开头,列表end结尾和step1:
lst[1:] #[2,3,4] lst[:3] #[1,2,3] lst[::2] #[1,3] lst[::-1] #[4、3、2、1] lst[-1:0:-1] #[4、3、2] lst[5:8] #[]由于起始索引大于lst的长度,因此返回空列表 lst[1:10] #[2,3,4] same as omitting ending index
考虑到这一点,您可以通过调用以下命令来打印列表的反向版本
lst[::-1] #[4、3、2、1]
当使用负数的步长时,起始索引必须大于终止索引,否则结果将为空列表。
lst[3:1:-1] #[4,3]
使用负步长索引等效于以下代码:
reversed(lst)[0:2] #0=1-1 #2 = 3 -1
所使用的索引比负索引所使用的索引小1,并且被反转。
高级切片
对列表进行切片时__getitem__(),将使用对象调用list对象的方法slice。Python具有内置的slice方法来生成slice对象。我们可以使用它来存储切片并稍后像这样重用它,
data = 'chandan purohit 22 2000' #假设数据字段的长度固定 name_slice = slice(0,19) age_slice = slice(19,21) salary_slice = slice(22,None) #现在我们可以有更多可读的切片 print(data[name_slice]) #尚丹·珀罗希特 print(data[age_slice]) #'22' print(data[salary_slice]) #'2000'
通过__getitem__在类中重写为我们的对象提供切片功能,这可能会很有用。