Python:每日一题 48

2017-11-27 13:35:00
六月
来源:
http://bbs.fishc.com/thread-87338-1-1.html
转贴 570
给你一个字符串数字,形如:
  1. "56 65 74 100 99 68 86 180 90"
复制代码

这个字符串,可以根据空格分组为若干数字,现在需要你按照这些数字各位数数字之和的升序进行排列原字符串。(哈哈,是不是有点看不懂啊,看例子)。以上字符串,经过函数order_weight(strng)计算,返回的结果是:
  1. "100 180 90 56 65 74 68 86 99"
复制代码

以上字符串各位数之和分别是:
  1. 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):

  1.     return ' '.join(sorted(sorted(_str.split(' ')), key=lambda x: sum(int(c) for c in x))
发表评论
评论通过审核后显示。