python list倒序输出中的一些问题

时间:2021-01-10 16:24:51

我们可以使用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)

所以我们再看看以下情况:

  1. a[4: -1:-1]相当于由a[4]–a[-1-1]:相当于从第四个元素到第四个元素逆序输出,所以为空值

  2. a[ : -1:-1]相当于a[len-1:len-1:-1],所以输出的也是空

  3. 如果想通过修改第二个参数来使得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符号不同