【问题标题】:reverse() usage in python?python中的reverse()用法?
【发布时间】:2020-11-15 23:13:45
【问题描述】:

sort() 和 reverse() 方法在对大列表进行排序或反转时修改列表以节省空间。提醒您,它们是按副作用操作的,它们不会返回已排序或反转的列表。

以上文字可以在http://docs.python.org/2/library/stdtypes.html#mutable-sequence-types找到

“修改列表以节省空间”是什么意思?

例子:

x = ["happy", "sad"]
y = x.reverse()

None 返回到y。那为什么会这样,

x.reverse()

成功反转x

【问题讨论】:

    标签: python reverse


    【解决方案1】:

    “修改列表以节省空间”是什么意思?

    这意味着它不会创建列表的副本。

    为什么,x.reverse() 成功反转x?

    我不明白这个问题。它这样做是因为这就是它的设计目的(反向 x 并返回 None)。

    请注意,sort()reverse() 的对应项不会修改原始文件并返回副本。这些函数称为sorted()reversed()

    In [7]: x = [1, 2, 3]
    
    In [8]: y = list(reversed(x))
    
    In [9]: x
    Out[9]: [1, 2, 3]
    
    In [10]: y
    Out[10]: [3, 2, 1]
    

    【讨论】:

    • 我猜 OP 想知道如何就地反转列表。
    • 对不起,应该更清楚,我的问题是为什么x.reverse(), print(x) 打印x 而不是None
    • @user3316430: print(x) 打印出x 的值,这是原始列​​表的反转。
    【解决方案2】:

    list.reverse 原地反转列表并返回None,它旨在这样做,类似于appendremoveextendinsert 等。

    In [771]: x = ["happy", "sad"]
    
    In [772]: x.reverse()
    
    In [773]: x
    Out[773]: ['sad', 'happy']
    

    【讨论】:

      【解决方案3】:

      几乎在任何编程语言中都有两种可调用定义:函数和过程。

      函数是执行某些处理并返回值的方法或子例程。例如,对两个整数 ab 求和的函数将返回求和的结果 a + b

      另一方面,过程几乎相同(即使在大多数语言的语法中),只是不返回值的细微差别,当然它们会被它们的副作用使用 em>,这意味着他们改变了某些东西的状态,或者只是处理一些数据并保存它,或者只是将它打印到一个文件中。

      所以在这种情况下,reverse 将充当一个过程,它会更改正在反转的列表的状态(通过反转它),以下是如何在没有额外空间的情况下完成此操作:

      def reverse(l):
          for i in range(len(l) / 2):
              l[i], l[-i-1] = l[-i-1], l[i]
      

      请注意,永远不会创建新列表,相反,代码所做的是通过交换第一个和最后一个、第二个和倒数第二个,以此类推,直到列表一半的元素。

      希望这能帮助你理解 ;)

      【讨论】:

        猜你喜欢
        • 2020-05-22
        • 2023-03-10
        • 1970-01-01
        • 1970-01-01
        • 2011-10-13
        • 2021-11-20
        • 2015-01-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多