'result [:: - 1]'是什么意思?

时间:2012-11-13 17:15:30

标签: python slice

我刚刚遇到以下python代码,这让我感到困惑:

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

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

2 个答案:

答案 0 :(得分:11)

它代表'切片'从结果中取出。第一个元素是起始位置,第二个元素是结束(非包含),第三个元素是步骤。冒号之前/之后的空值表示您从头开始(s[:3])或延伸到结尾(s[3:])。您也可以在此处包含实际数字,但在可能的情况下将其删除更为惯用。

例如:

In [1]: s = 'abcdefg'

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

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

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

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

返回从末尾开始的字符串切片,一次向后退一个元素:

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 :(得分:2)

这是一个反转列表的常用习惯用法。

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

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

您可以阅读“扩展切片”here