📜  Python|按数字之和对数字列表进行排序

📅  最后修改于: 2022-05-13 01:54:48.186000             🧑  作者: Mango

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)))))