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

スライスの2番目の要素は排他的であるためです。インデックスは、0までではなく、10から1まで実行されます。

my_listにするには、開始と終了を省略します。

print my_list[::-1]
于 2013-03-01T15:57:32.503 に答える
1

これは、表記法が機能する方法です。@GregHewgillが非常にうまく言ったように:

覚えておくべき重要な点は、:end値は、選択したスライスにない最初の値を表すということです。したがって、endとstartの違いは、選択された要素の数です(stepが1の場合、デフォルト)。

これにより、すべての要素が逆の順序で選択され、インデックス10の要素から始まり、インデックス0の要素まで続きます(ただし、その要素は含まれません)。

forもう1つの方法は、表記をインデックスの従来のループの省略形と考えることです。この場合:

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