10

私はちょうど私を少し混乱させる次のpythonコードに出くわしています:

 res = self.result[::-1].encode('hex')

エンコードの内容は非常に明確で、16 進値で表す必要があります。しかし、この self.result[::-1] 、特にコロンは何を意味するのでしょうか?

4

2 に答える 2

15

結果から取得する「スライス」を表します。最初の要素は開始位置、2 番目は終了 (非包括的)、3 番目はステップです。コロンの前後の空の値は、先頭から開始するか ( s[:3])、最後まで拡張するか( ) を示しますs[3:]。ここに実際の数値を含めることもできますが、可能な場合は省略した方が慣用的です。

例えば:

In [1]: s = 'abcdefg'

先頭から開始し、インデックス位置 2 で停止する文字列のスライスを返します。

In [2]: s[:3]
Out[2]: 'abc'

3 番目のインデックス位置から始まり、最後まで続く文字列のスライスを返します。

In [3]: s[3:]
Out[3]: 'defg'

最後から始まり、一度に 1 要素ずつ戻る文字列のスライスを返します。

In [4]: s[::-1]
Out[4]: 'gfedcba'

他のすべての要素を含む文字列のスライスを返します。

In [5]: s[::2]
Out[5]: 'aceg'

それらはすべて相互に組み合わせて使用​​することもできます。ここでは、インデックス位置 6 からインデックス位置 2 までの他のすべての要素を返すスライスを返します (s[:2:-2]より慣用的ですが、奇妙な数の文字を選択したことに注意してください :) ):

In [6]: s[6:2:-2]
Out[6]: 'ge'

step 要素は、返す要素を決定します。あなたの例では-1、一度に 1 要素ずつ、項目を逆方向に進むことを示しています。

于 2012-11-13T17:16:37.350 に答える
2

これは、リストを逆にする一般的なイディオムです。

a = ['a', 'b', 'c', 'd']
b = a[::-1]
print b

['d', 'c', 'b', 'a']

ここで「拡張スライス」について読むことができます。

于 2012-11-13T17:17:14.230 に答える