为了账号安全,请及时绑定邮箱和手机立即绑定

2-7任务,这样不行吗?结果不一样?

def cmp_ignore_case(s1, s2):
   s1=s1.lower()
   s2=s2.lower()
   if s1>s2:
       return 1
   if s1<s2:
       return -1
   else:
       return 0

print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)

运行结果;['about', 'bob', 'Credit', 'Zoo']

为什么还有大写的?不是转换成小写了吗?

正在回答

3 回答

http://img1.sycdn.imooc.com//58d28b3b000168ab11380526.jpg

输出还是原来的list啊兄弟

0 回复 有任何疑惑可以回复我~
#1

Quentin3824726 提问者

非常感谢!
2017-03-24 回复 有任何疑惑可以回复我~

这样给你解释下,sorted函数是生成了一个新的list,而原来的list并没有发生变化,把原来list的值放到cmp_ignore_case函数里面进行处理。而cmp_ignore_case这个函数只是全部转为大写进行比较,返回值只是1,-1。http://img1.sycdn.imooc.com//58d35c2a0001f57110320540.jpg

0 回复 有任何疑惑可以回复我~

这里涉及一个形式参数以及实际参数的概念吧,我的理解是sorted只是将那个list传入了cmp_ignore_case函数里面,而这个函数内部所做的变化跟原来的那个list是无关联的,只是用来判断而已,因此输出的时候依然是原来的样子

0 回复 有任何疑惑可以回复我~
#1

Quentin3824726 提问者

你是说,输出时是按原来的list输出的吗?那为什么按答案的样子:u1=s1.lower(),输出时,是输出新list,而不是按原来的list输出?谢谢了
2017-03-22 回复 有任何疑惑可以回复我~
#2

慕粉0220183176

大神问一下是s1.upper()和s2.upper()是怎么比较大小的???是比较字符串的首字母么??
2017-03-26 回复 有任何疑惑可以回复我~
#3

BoBoAlex 回复 慕粉0220183176

字符串默认按照ASCII大小来比较 教程上就有写啊 兄dei
2017-04-10 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

2-7任务,这样不行吗?结果不一样?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信