python的sort函数(TypeError: must use keyword argument for key function)输出值为none处理方法

前言

最近学习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[:]

总结

本篇内容结束,本人是初学者。遇到问题总结经验所作,若有不当之处,敬请赐教 感谢各位师傅!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值