【发布时间】:2018-03-12 22:06:23
【问题描述】:
示例:
L = [12,14,22,41,21,23]
我希望结果是:
R == [12,14,22,23]
数字的数字必须按递增顺序排列,以下是我的解决方案,它们都可以工作,但是它们都太慢了。
最快的排序方法是什么?
解决方案一:
R = filter(lambda j: int(''.join(sorted(str(j))))==j , L)
解决方案二:
for j in L:
if int(''.join(sorted(str(j))))==j:
R.append(j)
问题 2 - 另外,我希望将这些对应数字相加的总和等于 5。
这是我的解决方案,同样,它们确实有效,但速度太慢。
那么最快的方法是什么。
newR_should_be == [14,23]
一个:
newR = filter(lambda i: sum([int(x) for x in str(i)])==5 ,R)
两个:
for i in R:
if sum([int(x) for x in str(i)])==5:
newR.append(i)
任何帮助将不胜感激。
【问题讨论】:
-
所有数字都只有两位数吗?
-
不一定,但数字总是相同的数字,要么全是两位数,要么全是三位数,或者 [4123,4223,4567] 等等......
-
如果您真正想做的是在某个范围内计算或枚举具有该属性的数字,那么有比生成所有有效数字并计算它们更快的解决方案。
标签: python algorithm list sorting