【问题标题】:reverse() does not work on a Python literal?reverse() 不适用于 Python 文字?
【发布时间】:2011-10-13 05:36:54
【问题描述】:

为什么这在 Python 中不起作用?

>>> print [0,1,0,1,1,0,1,1,1,0,1,1,1,1,0].reverse() 
None

我希望以相反的顺序取回列表。

【问题讨论】:

    标签: python


    【解决方案1】:
    >>> a = [3, 4, 5]
    >>> print a.reverse()
    None
    >>> a
    [5, 4, 3]
    >>>
    

    这是因为reverse() 不返回列表,而是将列表反转到位。所以a.reverse()的返回值为None,如print所示。

    【讨论】:

    • 是的,从字面上看,这回答了 OP 的问题。但很明显,他想要做的是得到一份他的清单的反向副本。因此,如果您添加了有关如何实现这一目标的建议,那么您的答案将是完整的。 (我的建议是reversed()。)
    【解决方案2】:

    如果你想让它以相反的顺序返回一个新列表,你可以使用[::-1]

    >>> [0,1,0,1,1,0,1,1,1,0,1,1,1,1,0][::-1]
    [0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0]
    

    由于我仍在尝试理解反对票,如果原始列表被更改并不重要,请使用@taskinoor's answer,它会更快。

    但是,如果您需要保持原始列表不变,我建议您使用[::-1]

    from time import time
    lst = [0,1,0,1,1,0,1,1,1,0,1,1,1,1,0]
    
    s = time()
    for i in xrange(5000000):
        a = lst[::-1]          # creates a reversed list
    print time() -s
    
    s = time()
    for i in xrange(5000000):
        b = lst[:]             # copies the list
        b.reverse()            # reverses it
    print time() -s
    

    输出

    2.44950699806
    3.02573299408
    

    【讨论】:

    • (不是我,而是)你实际上并没有解释 OP 的代码有什么问题。
    • 您不仅没有解释 OP 的代码出了什么问题,而且您还没有提到 reversed(),这是最直接的选项。 (不过,我也没有对你投反对票。)
    • @katrielalex,taskinoor 之前已经回答了这个问题。在我的意义上,添加多个答案的可能性不是多次获得相同的答案。另外,我不认为用两种不同的措辞写同一件事会被视为两个不同的答案。 taskinoor 的回答是正确的,我赞成。我只是说点不一样的。这更像是一个提供 OP 期望的建议
    【解决方案3】:

    如果您想要反向复制列表,请使用reversed

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

    附言reversed 返回一个迭代器而不是列表的副本(就像 [][::1] 所做的那样)。所以它是合适的,那么你需要遍历一个反向的可迭代对象。此处附加的list() 仅用于演示。

    【讨论】:

      【解决方案4】:

      只是为了补充其他答案。不要忘记:

      >> reversed_iterator = reversed([0,1,0,1,1,0,1,1,1,0,1,1,1,1,0])
      >> print list(reversed_iterator)
      [0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0]
      

      如果这是一个要求,这样你的列表就不会改变。

      【讨论】:

        【解决方案5】:

        reverse 更改列表变量,如此处所示 list reverse

        如果您在反转后打印它,它将正确显示

        所以只使用一个变量

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-27
          • 2021-08-06
          • 2012-06-28
          • 1970-01-01
          • 1970-01-01
          • 2016-04-26
          相关资源
          最近更新 更多