前言
最近学习python时候遇到了sort函数。感觉很有意思也是容易出错的一个点,以此文章加深印象
sort函数用法
sort(reverse=True or False,keyfunction)
一般我们处理非嵌套列表用不上第二个参数,这里也不讲述第二个参数了,一般默认值就可以了。只处理第一个参数!
#定义一个无顺序的列表
my_list = [7,8,199,2]
#我们用sort函数对其从大到小排序
my_list.sort()
print(my_list)
打印结果为
2,7,8,199
很显然,这样可以打印出我们想要的结果,sort()参数置为空的话reverse默认为False。
那要是我们补充第一个参数呢?
#定义一个无顺序的列表
my_list = [7,8,199,2]
#我们用sort函数对其从大到小排序
my_list.sort(False)
print(my_list)
这样再运行会发现竟然会报错!
TypeError: must use keyword argument for key function
它这时候提示需要我们补充第二个参数。emm明明前面sort()都可以运行,补充一个参数后就不行了。zhe点我也不太理解~
不过处理方式也很简单!
#my_list.sort(False)
#改为
my_list.sort(reverse=False)
将第一个参数形式补充完整,再运行就不会报错了
那我们换种形式
#定义一个无顺序的列表
my_list = [1,8,99,19]
print(my_list.sort(reverse=True))
print(my_list)
your_list = my_list.sort()
print(your_list)
乍一看,这三种不都是打印列表的逆向排序结果吗?
那我们打印出来看下结果
打印结果却是:
None
[99, 19, 8, 1]
None
发现只有第二个打印出来了
原因很简单。
第一个和第三个打印的是sort函数的返回值,这个函数没有返回值,而是直接在列表内修改元素顺序。所以会打印出None。
出现这种状况不用慌张!其实就是你一般敲代码时候写的太快,直接将sort函数放在输出函数导致。
至于第三种你若是想要将整理后的函数赋给新列表,那也很简单
your_list = my_list
即可,不过这里涉及到一个新列表改动,旧列表也随之改动的问题。(这个问题你写段代码改变新列表的元素,输出旧列表的元素,会发现旧列表元素也会改变。)
为了避免这个问题
我们可以用以下代码去赋给新列表
your_list = list(my_list)
#或者使用切片
your_list = my_list[:]
总结
本篇内容结束,本人是初学者。遇到问题总结经验所作,若有不当之处,敬请赐教 感谢各位师傅!