2
my_list = range(1,11)
print my_list[10:0:-1]

此代码打印 [10, 9, 8, 7, 6, 5, 4, 3, 2] 没有意义。为什么这样做?

4

2 回答 2

2

因为切片中的第二个元素是独占的。指数从 10 一直运行到 1,而不是直到 0。

要反转my_list,只需省略开始和结束:

print my_list[::-1]
于 2013-03-01T15:57:32.503 回答
1

这只是符号的工作方式。正如@GregHewgill所说的那样:

要记住的关键点是 :end 值表示不在所选切片中的第一个值。因此,end 和 start 之间的区别在于所选元素的数量(如果 step 为 1,则为默认值)。

这将以相反的顺序选择所有元素,从索引 10 处的元素开始,直到索引 0 处的元素(但不包括该元素)。

另一种方法是将符号视为for索引上传统循环的简写。在这种情况下:

for(int i=10; i>0; i-=1)
于 2013-03-01T15:58:29.697 回答