Python:每日一题 48
- 2017-11-27 13:35:00
- 六月
- 来源:
- http://bbs.fishc.com/thread-87338-1-1.html
- 转贴 570
- "56 65 74 100 99 68 86 180 90"
这个字符串,可以根据空格分组为若干数字,现在需要你按照这些数字各位数数字之和的升序进行排列原字符串。(哈哈,是不是有点看不懂啊,看例子)。以上字符串,经过函数order_weight(strng)计算,返回的结果是:
- "100 180 90 56 65 74 68 86 99"
以上字符串各位数之和分别是:
- 1,9,9,11,11,11,14,14,18
你会发现,有些数字的各位数之和是相等的,这时候的需要根据原始字符串的顺序排列,而非数字大小排列。例如180和90,因为作为字符串而言,1是排在9前面的,所以180,排在90前面。同理56,65,74,同样都为11,但是排列是按照5,6,7排列的。
题目不算很难,不过想要比较简洁的做出来,还是需要对语法比较熟悉的。
def order_weight(_str):
- return ' '.join(sorted(sorted(_str.split(' ')), key=lambda x: sum(int(c) for c in x))
发表评论