What does 'result[::-1]' mean?
我刚刚遇到了下面的python代码,这让我有点困惑:
1 | res = self.result[::-1].encode('hex') |
编码内容很清楚,应该用十六进制值表示。然而,什么这个self.result[::-1]是否意味着,特别是冒号?
它表示要从结果中获取的"切片"。第一个元素是起始位置,第二个元素是结束(非包含),第三个元素是步骤。冒号前/后的空值表示从开始(
例如:
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的每个其他元素的切片(注意,
1 2 | In [6]: s[6:2:-2] Out[6]: 'ge' |
step元素确定要返回的元素。在您的示例中,
这是一个常见的习惯用法,可以颠倒列表。
1 2 3 4 5 | a = ['a', 'b', 'c', 'd'] b = a[::-1] print b ['d', 'c', 'b', 'a'] |
您可以在这里阅读"扩展片"。