Python超级简洁的高深语法之五:列表索引/切片
coder是很“懒”的人,说成懒,不如称为“智者”,能用一行搞定的,绝对不废话连篇,又有哪家公司按照代码的行数来绩效考核的呢?我想是没有的,如果说有,为了自己的前途,赶紧换家公司,特别是算法工程师,你懂的。
很多人爱上python,也许是通过简单的数组使用开始的,list[-1],取最后一个元素,想想其他语言咋写的,心里就有数了。
1.正向索引
>>> list = [0,1,2,3,4,5,6,7,8,9]
>>> print(list[0])
0
>>> print(list[3])
3
>>>
正向索引不多说,和其他语言一样。
2.反向索引
>>> list = [0,1,2,3,4,5,6,7,8,9]
>>> print(list[-1])
9
>>> print(list[-4])
6
>>>
反向索引,就有意思了,通过倒排来取元素是不是很牛X,当然除了数组,元组也同样可以这样使用。
3.切片索引
>>> list = [0,1,2,3,4,5,6,7,8,9]
>>> print(list[2:6])
[2, 3, 4, 5]
>>> print(list[1:6:2])
[1, 3, 5]
>>> print(list[-3:-1])
[7, 8]
切片索引,中括号中都是以元素的位置来开始和结束的,但不包括最后一个元素的值。
list[2:6],从元素标记号2开始,取到第6个元素,但不包含最后的第6个元素。
其他的同等的道理。
list[1:6:2]最后的2,代表步长,从第一个元素开始,每2步取数,可以这么理解,元素3和元素1步长为2,取数;同理元素5和元素3步长2,取数。
记住步长是俩个元素之间得距离
list[-3:-1]同样是不包含最后一个元素。
4.无线索引
>>> list = [0,1,2,3,4,5,6,7,8,9]
>>> print(list[:3])
[0, 1, 2]
>>> print(list[3:])
[3, 4, 5, 6, 7, 8, 9]
>>> print(list[-3:])
[7, 8, 9]
>>> print(list[::])
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print(list[::2])
[0, 2, 4, 6, 8]
>>>
何为无线索引,即是无头(list[:3]),或者无尾(list[3:]),或者头尾皆无(list[::])
理解起来也很简单,既然有数字就代表从什么到什么位置,[:3]代表从开始到第三个位置,[3:]代表从第三个位置到最后。[::]代表从头到尾。
[::2]多出的2就是步长,理解同第3步。
总结一下:遇到数字即为元素位置,取数不取最后一个元素,2个冒号后的数字代表步长