列出具有负步长的切片

时间:2018-02-14 16:46:15

标签: python

为什么下面的代码在返回[4, 3, 2]时会返回一个空列表(因为步长为负):

i = [  0,  1,  2,  3,  4,  5,  6,  7,  8,  9]
   #[  0,  1,  2,  3,  4,  5,  6,  7,  8,  9]
   #[-10, -9, -8, -7, -6, -5, -4, -3, -2, -1]
s = i[2:-5:-1]
print(s)

2 个答案:

答案 0 :(得分:1)

它开始从" 2"向后退(步骤-1)直到" -5"达到了 - 但达到了元素" -5"在这种情况下需要积极的一步。

例如输出:

i[2::-1]

是: [2, 1, 0]

答案 1 :(得分:0)

事实证明,当从左到右(使用索引的正面或正面版本)时,需要一个正步长。

从右到左需要一个负步长:

i = [  0,  1,  2,  3,  4,  5,  6,  7,  8,  9]
   #[  0,  1,  2,  3,  4,  5,  6,  7,  8,  9]
   #[-10, -9, -8, -7, -6, -5, -4, -3, -2, -1]

# to get 6, 7, 8
print(i[6:9])
print(i[-4:-1:1])
print(i[6:-1:1])
print(i[-4:9:1])


# to get 8, 7, 6
print(i[8:5:-1])
print(i[-2:-5:-1])
print(i[-2:5:-1])
print(i[8:-5:-1])