【问题标题】:why cannot directly use print(something.sort())?为什么不能直接使用 print(something.sort())?
【发布时间】:2021-04-27 07:02:26
【问题描述】:

我是 python 初学者,谁能帮忙解释一下为什么这个 print() 不起作用,而 python 打印出一个 None 结果?

list =['a','c','d','e']
print(list.sort())

所以如果我多做一步,我就能得到结果:

list =['a','c','d','e']
list.sort()
print(list)

在此先感谢

【问题讨论】:

    标签: python printing


    【解决方案1】:

    list.sort()是修改列表的修改函数。它本身不是一个列表。 print(list.sort()) 会得到你 None,因为没有从这个函数返回的列表。

    【讨论】:

      【解决方案2】:

      list.sort() 就地修改列表,这意味着它在内存中的当前位置对列表进行排序而不返回任何内容。

      你想要的是sorted(list),它会复制列表,排序,然后返回。

      【讨论】:

        【解决方案3】:

        list.sort() 不会将您的排序列表存储在新变量中,而是直接修改列表,将其视为一个过程。您仍然可以通过制作副本来保留您的原始列表,只需使用 build-it copy 方法

        代码:

        list =['c','a','d','e']
        
        # saving a copy of our original list
        originList = list.copy()
        print("original list:",originList)
        
        # sorting our list
        list.sort()
        print("sorted list:",list)
        

        输出:

        oiginal list: ['c', 'a', 'd', 'e']  # the copy (now it's the original)
        sorted list: ['a', 'c', 'd', 'e']    # the original (now it's sorted)
        

        【讨论】:

        • 注意:我不建议命名变量,如预定义的python关键字,如list/tuple等...而是将第一个字符大写或在名称末尾添加一个数字,否则可能会出现错误
        【解决方案4】:

        回答您正在尝试做的事情所暗示的问题:

        如果你想要一个单行来打印排序列表,你可以使用

        print(sorted(the_list))
        

        请注意,sorted(the_list) 返回一个新的、排序后的the_list 版本,而the_list 之后保持不变。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-08-09
          • 2022-01-26
          • 2023-04-03
          • 2021-02-03
          • 2017-01-10
          • 2014-11-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多