【问题标题】:sort() function does not give the expected result [duplicate]sort() 函数没有给出预期的结果[重复]
【发布时间】:2013-05-02 13:11:18
【问题描述】:

我是 Python 的初学者,我试图让下面发布的 Python 代码工作,但不幸的是,它没有给我预期或正确的结果。

我正在尝试使用内置方法 sort() 对包含数字的简单列表进行排序,在执行程序后我得到 NONE 作为结果。

请指导我解决这个问题。

Python 代码

a=[7,4,0,-5,30,2,11,84,6]
b=a.sort()
print(b)

【问题讨论】:

    标签: python


    【解决方案1】:

    函数.sort() 不返回它返回None 的列表对象。

    如果你看一下这个例子,你可以看到 a 在没有分配给 b 的情况下是如何排序的。

    >>> a=[7,4,0,-5,30,2,11,84,6]
    >>> a.sort()
    >>> a
    [-5, 0, 2, 4, 6, 7, 11, 30, 84]
    

    【讨论】:

      【解决方案2】:

      a.sort()a 进行排序并返回None。试试这个:

      a=[7,4,0,-5,30,2,11,84,6]
      a.sort()
      print(a)
      

      【讨论】:

        【解决方案3】:

        sort() 是一个 inplace 排序。它对列表进行排序,但不返回它(它实际上返回None)。

        >>> a=[7,4,0,-5,30,2,11,84,6]
        >>> a.sort()
        >>> a
        [-5, 0, 2, 4, 6, 7, 11, 30, 84]
        

        要单独获取排序列表,请使用sorted()

        >>> a=[7,4,0,-5,30,2,11,84,6]
        >>> b = sorted(a)
        >>> b
        [-5, 0, 2, 4, 6, 7, 11, 30, 84]
        >>> a
        [7, 4, 0, -5, 30, 2, 11, 84, 6]
        

        【讨论】:

          【解决方案4】:

          list.sort 对列表进行就地排序,从而返回None

          改为使用返回排序列表的sorted函数

          b = sorted(a)
          

          【讨论】:

          • 或者对于您提供的示例代码,您可以这样做:a=[…]a.sort()print a
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-05-01
          • 1970-01-01
          • 2012-08-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-24
          相关资源
          最近更新 更多