【问题标题】:What is the meaning of "int(a[::-1])" in Python? [duplicate]Python中的“int(a[::-1])”是什么意思? [复制]
【发布时间】:2015-10-16 11:45:46
【问题描述】:

我无法理解这一点。我在人们的代码中看到了这一点。但无法弄清楚它的作用。这是在 Python 中。

str(int(a[::-1]))

【问题讨论】:

  • a 是什么数据类型?
  • What does 'result[::-1]' mean? 的可能副本,或者更好的是:Explain Python's slice notation
  • 这是一些愚蠢的代码,因为int() 调用实际上是一个空操作(它不做任何事情),因为结果被转换为一个字符串。
  • @BurhanKhalid,您不能认为这是无操作的。如果字符串实际上不能转换为整数,则在重新转换为字符串之前会出现异常(如果我没记错的话是 ValueError)。如果您将该强制转换删除为 int,您将失去(快速而简单的)完整性检查,并且代码将盲目地反转任何字符串,无论它是否是整数的表示。

标签: python python-2.7 python-3.x


【解决方案1】:

假设a 是一个字符串。 python 中的 Slice 表示法具有语法 -

list[<start>:<stop>:<step>]

因此,当您执行a[::-1] 时,它会从末尾开始,直到第一个获取每个元素。所以它反转了a。这也适用于列表/元组。

例子-

>>> a = '1234'
>>> a[::-1]
'4321'

然后你将它转换为 int 然后再转换回字符串(虽然不知道你为什么这样做),这只是给你返回字符串。

【讨论】:

  • 如果我要明确填写所有三个索引,它们会是什么?
  • 要获得相同的结果,您不能全部填写三个,您可以将 设置为 len(a)-1 ,但没有您可以放入 &lt;stop&gt; 索引来获取第一个元素。示例 - a[len(a)-1::-1] 。这是因为&lt;stop&gt;索引是独占的,即该索引处的元素不被纳入,而-1表示最后一个元素,所以没有索引可以用来包含第一个元素,除了留下它空白
  • 从 int 到 string 的转换可能是删除反转字符串中前导零的一种 hacky 方法
【解决方案2】:

中使用的符号
a[::-1]

表示对于给定的字符串/列表/元组,您可以使用格式对所述对象进行切片

<object_name>[<start_index>, <stop_index>, <step>]

这意味着对象将从给定的开始索引切分每个“步骤”索引,直到停止索引(不包括停止索引)并将其返回给您。

如果缺少开始索引或停止索引,则使用默认值作为给定字符串/列表/元组的开始索引和停止索引。如果该步骤留空,则它采用默认值 1,即它通过每个索引。

所以,

a = '1234'
print a[::2]

会打印

13

现在这里的索引和步数都支持负数。因此,如果您给出 -1 索引,它将转换为 len(a)-1 索引。如果你给 -x 作为步数,那么它会从起始索引开始每第 x 个值步进,直到反向的停止索引。例如

a = '1234'
print a[3:0:-1]

这会返回

432

请注意,它不会返回 4321,因为不包括停止索引。

现在在你的情况下,

str(int(a[::-1]))

只会反转一个给定的整数,它存储在一个字符串中,然后将它转换回一个字符串

即“1234”->“4321”->4321->“4321”

如果您想要做的只是反转给定的字符串,那么只需 a[::-1] 就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 2020-02-15
    • 1970-01-01
    • 2013-01-03
    相关资源
    最近更新 更多