python3.7.2怎么使用_貌似Python3.7.2怎么都运行不了

这个链接里的解答帮助很大,少走了很多弯路,建议新学生一定要看。同时也看一下官方文档。

这个课程里我记得用的是python 2.7版本。

2.7版本里的sorted函数最多接收4个参数。sorted(iterable, cmp, key, reverse),其中后三个都是可选的。

3.7版本里的sorted函数最多接收3个参数。sorted(iterable, key, reverse),其中后两个都是可选的,相比2.x版本,删掉了cmp参数。

在2.7的文档中,作者说了,用key和reverse比用cmp快得多,因为cmp要对iterable中的每一个待比较项目进行操作,而key和reverse则对整个iterable进行一次操作即可。

在2.7版本文档中写道,cmp用于为iterable中的每2项在比较时指定一个特定的比较函数,比如在比较字符串时,你可以设定,先对每一项执行某个操作,比如全都小写,再比较;又或者在比较数字时候,先对每一项平方一下再比较。而key参数则是用于指定拿iterable的每一项的什么来比较,默认是None,即为直接比较大小,举例:用户可以指定key = lambda x: x[2],从而让每一项拿出第3个字符来互相比较。

来看,我理解,虽然cmp和key,一个接收2个参数,一个只接收1个参数,但两者的实际作用大致相同,比如在此例中,见以下代码:

print sorted(['bob', 'about', 'Zoo', 'Credit'],cmp = lambda x,y: cmp(x.lower(),y.lower()) )

print sorted(['bob', 'about', 'Zoo', 'Credit'],key = lambda x: x.lower() )

print sorted(['bob', 'about', 'Zoo', 'Credit'],cmp = lambda x,y: cmp(x.lower(),y.lower()),key = lambda x: x.lower() )

三者的返回结果是完全一样的。

在3.x版本中,直接用key来实现即可。

至于楼主遇到的错误,如果跟链接里的文章的错误一样的话,我是这么理解的。

在本练习中,这样的写法是没问题的,因为这个函数符合cmp参数的要求,即接收2个参数s1和s2。

在3.x中,python试图将cmp_ignore_case理解为key参数,key参数对应的自定义函数要求只能接收1个函数,但这个函数中给了2个,所以出错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值