我们可以使用Python的切片操作来完成list的倒序操作,比如:
a=['a','b','c','d','e','f']
print(a[ : :-1])
可以得到如下结果:
['f', 'e', 'd', 'c', 'b', 'a']
下面来看看如下操作:
(1)
a=['a','b','c','d','e','f']
print(a[ 4: :-1])
结果:
['e', 'd', 'c', 'b', 'a']
(2)
a=['a','b','c','d','e','f']
print(a[ 4: 0:-1])
结果
['e', 'd', 'c', 'b']
(3)想在不省略第二个参数的情况下,把e之前的元素都输出:
a=['a','b','c','d','e','f']
print(a[4: -1:-1])
结果却是
[]
这是什么原因呢,
现在来讲一下有关list切片时,步长为负时要注意的问题:
当我们使用list的三元组形式[a: b:c]进行切片时,系统遵行以下规则:
1.首先系统检查c,默认值为+1。c的值决定是正序还是逆序
2.接着检查a,当c为正值或者省略时,a的默认值为0;如果c的负值时,a的默认值是-1
3.最后检查b,当c为正值或者默认值时,b的默认值是len;当c的值是负时,b的默认值是-(len+1)
所以我们再看看以下情况:
-
a[4: -1:-1]相当于由a[4]--a[-1-1]:相当于从第四个元素到第四个元素逆序输出,所以为空值
-
a[ : -1:-1]相当于a[len-1:len-1:-1],所以输出的也是空
-
如果想通过修改第二个参数来使得list中的第一个元素被输出出来,则第一个元素可以表示为-(len+1),如:
eg1
a=['a','b','c','d','e','f']
print(a[-2:-7:-1])
['e', 'd', 'c', 'b', 'a']
想通过a[5:b:-1] 的形式把前五个字符都输出来好像是不可实现的,(b=-1输出[])
当我们使用切片的时候,如果ab参数都不省略的话,尽量避免ab符号不同
网友评论