关于python:”result[::-1]”是什么意思?

What does 'result[::-1]' mean?

我刚刚遇到了下面的python代码,这让我有点困惑:

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

编码内容很清楚,应该用十六进制值表示。然而,什么这个self.result[::-1]是否意味着,特别是冒号?


它表示要从结果中获取的"切片"。第一个元素是起始位置,第二个元素是结束(非包含),第三个元素是步骤。冒号前/后的空值表示从开始(s[:3]或延伸到结束(s[3:])。您也可以在这里包括实际数字,但尽可能不包括这些数字更惯用。

例如:

1
In [1]: s = 'abcdefg'

返回从开始处开始并在索引位置2处停止的字符串切片:

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

返回从第三个索引位置开始并延伸到末尾的字符串切片:

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

返回从末尾开始并向后退一步的字符串切片:

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

返回包含其他所有元素的字符串切片:

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

它们也可以结合使用。这里,我们返回返回从索引位置6开始到索引位置2的每个其他元素的切片(注意,s[:2:-2]更惯用,但我选择了奇怪的字母数:):

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

step元素确定要返回的元素。在您的示例中,-1表示它将后退一步通过项目,一次一个元素。


这是一个常见的习惯用法,可以颠倒列表。

1
2
3
4
5
a = ['a', 'b', 'c', 'd']
b = a[::-1]
print b

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

您可以在这里阅读"扩展片"。