【问题标题】:Unable to reverse list in Python [duplicate]无法在 Python 中反转列表 [重复]
【发布时间】:2018-03-31 15:08:12
【问题描述】:

我尝试了几种方法,但由于某种原因,我无法反转此列表。这是我的代码:

array = []
elements = str(input().split())
array.append(elements)
array.reverse()
print(array)

这只是返回原始列表。 array[::-1] 做同样的事情。 reversed 函数输出 <list_reverseiterator object at 0x05AC1550>。我该怎么做?

【问题讨论】:

  • print(list(array))。 python3中的一些数组方法返回的是生成器而不是实现的列表。
  • 听起来很奇怪。列表内容是什么?
  • @JaredSmith 刚试过。以原始顺序打印相同的列表。
  • @JohanL 任何内容(数字、字母、句子)的结果都是一样的。
  • 您的 array 包含 1 个元素。我想说reverse 在这里工作得很好。

标签: python python-3.x


【解决方案1】:

您正在接受输入,然后将其拆分,然后再次将其转换为字符串。 如果您想将输入拆分为 List 然后反转它,那么您应该尝试以下操作:

array = []
elements = input().split()
print(elements)
elements.reverse()
print(elements)

【讨论】:

  • elements = input().split()[::-1]
【解决方案2】:

请先查看@Bishakh Ghosh 的答案。至于为什么您的代码不起作用:

elements 是一个数组(列表)。你是 appending 到 array 使它看起来像:

array = [[element1, element2, etc ]]

这是array(list) 的array(list)。你实际上需要这样做:

array += elements

现在array 会有这个:

array = [element1, element2, etc]

这将按您的预期工作。更短(比您的代码)的方式是:

print(input().split()[::-1])

【讨论】:

    【解决方案3】:

    在您的代码中,array 被实例化为一个空列表。此外,elements = str(input().split()) 将创建一个项目列表,但是您需要在split 方法中指定分隔符,即split("")split(" ")。结果,您将一个东西列表(可能是一个空列表)附加到一个空列表中。就像 Bishakh 所说,不要将数组转换为自身的字符串版本,这就是为什么您要获取内存位置的原因(因为您的编译器将数组视为字符串对象而不是数组)。

    尝试类似的东西

    elements = input().split(" ")
    elements.reverse() or elements = elements[::-1]
    

    【讨论】:

    • 如果没有指定分隔符,split() 在空白处分割。所以不,你不必指定split(" ") 如果空格可以(空格、制表符等)
    • @fyngyrz 说的不完全一样。没有参数,split 足够聪明,可以拆分空格和制表符,......就像你说的那样,但它也不会创建空字段,就像 split(" ")re.split("\s") 会做的那样。好吧,我很少看到split(" ") 有用,你说得对。
    • 来自答案:“但是您需要在拆分方法中指定分隔符” - 这是不正确的
    【解决方案4】:

    分配结果:

    array = array[::-1]

    【讨论】:

    • 你没有抓住重点。列表是可变的。
    • 不,我没有错过重点。只是做array[::-1] 不会反转数组。 array=array[::-1] 将。
    • array.reverse() 反转数组,就像 array.sort() 对其进行排序一样。问题是在那之前。我明白你为什么现在回答这个问题。但这并不能解决 OP 问题。
    • OP:“这只是返回原始列表。array[::-1] 做同样的事情。” - 这就是促使我发布此答案的原因。从示例代码的形式和该语句的形式来看,我认为 OP 很可能假设 array[::-1] 就地反转了列表。
    • 我现在明白了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-04
    • 2017-02-27
    • 2019-07-05
    • 1970-01-01
    • 2013-12-15
    • 2022-08-12
    • 2016-03-21
    相关资源
    最近更新 更多