这两条语句都对,但是看不太懂,主要是对sorted中的key,和lambda表达式不太清晰,大神能给点播一下吗
print(*(sorted(input(),key = lambda x:(x.isdigit() and int(x)%2==0, x.isdigit(),x.isupper(),x.islower(),x))),sep = '')
print(*sorted(input(), key=lambda c: (c.isdigit() - c.islower(), c in '02468', c)), sep='')
sorted 是根据 key 函数来排序. key 函数返回元组. 元组前面的元素越大,就排在越后.
例如 (False,True,False) 就排在 (False,False,Ture) 后面.(True(1) > False(0) )
两种方法还是有些区别:
lambda x:(x.isdigit() and int(x)%2==0, x.isdigit(),x.isupper(),x.islower(),x)))
这个的含义是: 数字中的偶数为大 , 数字为大, 大写字母为大,小写字母为大, 根据字符串比较
lambda c: (c.isdigit() - c.islower(), c in '02468', c))
这种是: 数字为大,小写字母最小, 偶数为大, 根据字符串比较
只有数字和字母两种是一样的结果,如果还有其他字符,就有区别, 第2种小写字母总会排前面. 第1种小写字母会排在其他 非 数字字母 字符后面