Python|按数字之和对数字列表进行排序
给定一个非负数列表,任务是根据这些整数的位数之和对这些整数进行排序。
例子:
Input : [12, 10, 106, 31, 15]
Output : [10, 12, 31, 15, 106]
Input : [1111, 19, 29, 11, 12, 9]
Output : [11, 12, 1111, 9, 19, 29]
让我们讨论一些 Pythonic 方法来完成这项任务。
方法#1:列表理解
使用 for 循环将列表的每个元素转换为不同的列表,并将其数字作为元素。现在,使用上述函数作为key的 sorted函数。
# Python3 Program to Sort list of
# integers according to sum of digits
def sortList(lst):
digits = [int(digit) for digit in str(lst) ]
return sum(digits)
# Driver Code
lst = [12, 10, 106, 31, 15]
print(sorted(lst, key = sortList))
输出:
[10, 12, 31, 15, 106]
方法 #2:使用map()
这种方法与上述方法类似,略有不同的是,我们使用map()
将列表的每个元素转换为不同的列表,并将其数字作为元素,然后遵循与上述类似的方法。
# Python3 Program to Sort list of
# integers according to sum of digits
def sortList(num):
return sum(map(int, str(num)))
# Driver Code
lst = [12, 10, 106, 31, 15]
result = sorted(lst, key = sortList)
print(result)
输出:
[10, 12, 31, 15, 106]
对于上述方法,还有一种单线替代方案。
def sortList(lst):
return sorted(lst, key = lambda x:(sum(map(int, str(x)))))