Python:每日一题 89(答题领鱼币)
有一个由数字组成的列表:现在要把他们排序,要求按各位数字之和的大小,由小到大排序。结果为
我的解法:
**** Hidden Message ***** 本帖最后由 jerryxjr1220 于 2017-9-1 17:08 编辑
num =
print(sorted(num, key=lambda n: sum(int(e) for e in str(n)))) 折腾sorted函数咯
def sum_sort(a):
return sorted(a, key=lambda x: sum(int(i) for i in str(x))) def sortlist(list1):
result = sorted(list1, key = lambda x: sum(int(each) for each in str(x)))
return result 学习学习 本帖最后由 chunchun2017 于 2017-9-1 20:55 编辑
大神们的代码一眼看不懂,来个笨一点的
list0 =
list1 = []
for i in list0:
sum = 0
for j in str(i):
sum+=int(j)
list1.append(sum)
dict0=dict(zip(list0,list1))
dict1=dict(sorted(dict0.items(),key=lambda item:item))
print(list(dict1.keys()))
======================
运行结果:
[1, 100, 4, 121, 400, 16, 25, 1024, 1600, 2401, 2500, 9, 36, 81, 144, 225, 324,
441, 900, 1521, 2025, 2304, 2601, 3600, 8100, 64, 361, 1225, 2116, 3025, 5041, 6
400, 49, 256, 625, 841, 1156, 1444, 2209, 2704, 3136, 3721, 4225, 4900, 6241, 16
9, 196, 484, 529, 961, 1681, 3364, 3481, 4624, 7225, 9025, 576, 729, 1089, 1296,
1764, 2916, 3249, 4356, 4761, 5184, 5625, 6084, 6561, 7056, 9216, 9801, 289, 67
6, 784, 1369, 1936, 2809, 3844, 4096, 5329, 6724, 7921, 8281, 9604, 1849, 5476,
7744, 8464, 9409, 4489, 5776, 5929, 7396, 8836, 3969, 7569, 8649, 6889] a =
#计算数字各位数字之和
def sumb(n):
return n%10 + (n//10)%10 + (n//100)%10 + (n//1000)%10
#结合上面的sumb()函数,调整冒泡排序算法
def new_bubble_sort(lists):
count = len(lists)
for i in range(0,count):
for j in range(i+1,count):
if sumb(lists) > sumb(lists):
lists, lists = lists, lists
return lists
new_bubble_sort(a)
print(a) 刚学到第四课,来看看。。 本帖最后由 ChrisYang 于 2017-9-4 16:54 编辑
list1=
list2=
k=[]
for x in list2:
t=0
for xx in x:
t+=int(xx)
k.append(t)
list3=list(zip(k,list1))
list4=sorted(list3)
list5= for i in list4]
print(list5)
______________________________________
运行结果
>>> list5
>>>
懵逼 看下答案 学习学习{:5_109:}
学习一下 学习学习 没做对{:5_98:} 本帖隐藏的内容
def sum1(num):
s = 0
while num:
s += num % 10
num //= 10
return s
list1 =
list1.sort(key = sum1)
print(list1) lst =
def order(lst):
return sorted(lst, key = lambda number: sum(int(i) for i in str(number)))
print(order(lst))
>>> ================================ RESTART ================================
>>>
L =
def calc(n):
rs = 0
while n>0:
n,rem = divmod(n,10)
rs += rem
return rs
print(sorted(L,key=calc)) 我刚学,我觉得把数组中第一第二个进行比较,再第二第三个进行比较。。。如此换位就成功啦
页:
[1]
2