刚学习Python,有一个小问题

关于列表
这是我的初代码
guests = ['mama','baba','xinyu','yizheng']
guests.sort()
print(guests)
这样运行是没有错的
但是我把它改成这样
guests = ['mama','baba','xinyu','yizheng']
print(guests.sort())
结果输出None
我不是很理解为什么不能这样写代码,因为sort是一个方法,就和比如方法upper一样
我可以这样写print(guests[0].upper()),输出正确
但这样print(guests.sort())就不行了,为什么?

就是有点不理解

方法就是一个函数,你想print()它的结果,要看函数的返回值的。

obj.sort()排序方法是在对象obj上做的,也就是in-place,没有返回值,你打印它也就是None
obj.upper()这个方法返回字符的大写,对象本身不作改变的
这就是两者的区别,如有帮助请给予采纳,谢谢!!!


> sort(self, /, *, key=None, reverse=False)
    Sort the list in ascending order and **return None.**    
    The sort is **in-place** (i.e. the list itself is modified) and stable (i.e. the
    order of two equal elements is maintained).    
    If a key function is given, apply it once to each list item and sort them,
    ascending or descending, according to their function values.    
    The reverse flag can be set to sort in descending order.

> upper() method of builtins.str instance
    **Return a copy** of the string converted to uppercase.

【以下回答由 GPT 生成】

问题的原因是,list.sort()方法是在原列表上进行排序,返回值为None,而不是排序后的列表。因此,当你尝试打印guests.sort()时,输出为None

如果你想要打印排序后的列表,可以先对列表进行排序,然后再打印列表,代码如下:

guests = ['mama', 'baba', 'xinyu', 'yizheng']
guests.sort()
print(guests)

输出结果为:

['baba', 'mama', 'xinyu', 'yizheng']

如果你不想改变原列表,并且想要打印排序后的列表,可以使用sorted()方法,该方法返回一个新的已排序列表,而不改变原列表。代码如下:

guests = ['mama', 'baba', 'xinyu', 'yizheng']
sorted_guests = sorted(guests)
print(sorted_guests)

输出结果为:

['baba', 'mama', 'xinyu', 'yizheng']

希望能解答你的问题,如果还有其他疑问,请随时提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^