【发布时间】: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 初学者,谁能帮忙解释一下为什么这个 print() 不起作用,而 python 打印出一个 None 结果?
list =['a','c','d','e']
print(list.sort())
所以如果我多做一步,我就能得到结果:
list =['a','c','d','e']
list.sort()
print(list)
在此先感谢
【问题讨论】:
list.sort()是修改列表的修改函数。它本身不是一个列表。 print(list.sort()) 会得到你 None,因为没有从这个函数返回的列表。
【讨论】:
list.sort() 就地修改列表,这意味着它在内存中的当前位置对列表进行排序而不返回任何内容。
你想要的是sorted(list),它会复制列表,排序,然后返回。
【讨论】:
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)
【讨论】:
回答您正在尝试做的事情所暗示的问题:
如果你想要一个单行来打印排序列表,你可以使用
print(sorted(the_list))
请注意,sorted(the_list) 返回一个新的、排序后的the_list 版本,而the_list 之后保持不变。
【讨论】: