【问题标题】:Python a = a.reverse makes the list empty?Python a = a.reverse 使列表为空?
【发布时间】:2011-04-28 18:24:36
【问题描述】:

在口译员处,

a = [1,2,3,4]
a = a.reverse()

接下来,当我在解释器中输入 a 时,我什么也得不到。所以似乎 a = a.reverse() 生成了一个空列表。这是设计的吗?

我在 windows xp 上使用 python 2.5。

【问题讨论】:

标签: python


【解决方案1】:

list.reverse() 就地修改列表,返回无。但是如果你想保护旧列表,你可以使用 reversed() 函数,它返回一个迭代器。

In [1]: a=[1,2,3,4]

In [2]: print(a.reverse())
None

In [3]: a
Out[3]: [4, 3, 2, 1]

In [4]: a=[1,2,3,4]

In [5]: print(reversed(a))
<listreverseiterator object at 0x24e7e50>

In [6]: list(reversed(a))
Out[6]: [4, 3, 2, 1]

In [7]: a
Out[7]: [1, 2, 3, 4]

【讨论】:

    【解决方案2】:

    reverse 就地更改列表,并且不返回任何内容。因此,这是预期的用法:

    a = [1, 2, 3, 4]
    a.reverse()
    a       # => [4, 3, 2, 1]
    

    如果您将reverse 的结果分配回a,您将使用无意义的返回值 (None) 覆盖其所有辛勤工作,这就是您的错误的来源。

    【讨论】:

      【解决方案3】:

      list 是一个可变类型,所以list 操作是就地的,并返回None

      【讨论】:

        【解决方案4】:

        python 上列表的内置方法reverse 不会返回反向列表。

        它将列表反转。

        所以,如果您想反转您的列表,就像在您的代码中一样,只需执行以下操作:

        a = [1,2,3,4]
        a.reverse()
        

        【讨论】:

          【解决方案5】:

          list.reverse() 只是不返回任何内容,因为它会就地更改列表。看这个例子:

          >>> a = [1,2,3,4]
          >>> a.reverse()
          >>> a
          [4, 3, 2, 1]
          

          还有reversed 函数(实际上是一个类型,但在这里无关紧要),它不会就地更改列表,而是返回一个迭代器,其中列表项以相反的顺序排列。试试:

          >>> a = [1,2,3,4]
          >>> a = list(reversed(a))
          >>> a
          [4, 3, 2, 1]
          

          【讨论】:

            【解决方案6】:

            我想你想做的是:

            a = [1,2,3,4]
            a.reverse()
            

            a 是一个对象,操作是针对它的数据进行的,所以你不需要再次分配它。

            【讨论】:

              【解决方案7】:

              reverse 方法“原地”执行反向操作(如排序)并返回 None,因此在调用 a.reverse() 之后 a 已经包含结果。

              【讨论】:

                猜你喜欢
                • 2020-12-24
                • 1970-01-01
                • 1970-01-01
                • 2020-07-15
                • 1970-01-01
                • 1970-01-01
                • 2020-12-24
                • 2016-05-22
                • 1970-01-01
                相关资源
                最近更新 更多