我刚刚遇到以下python代码,这让我感到困惑:
res = self.result[::-1].encode('hex')
编码内容非常清楚,应该表示为十六进制值。但是,什么 这个self.result [:: - 1]是否意味着,特别是冒号?
答案 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)