Dom*_*mra 9 python sorting list
在一个安静的星期六晚上解决一些谜题问题(哇哇......不)并且正在与sort()挣扎.结果并不完全符合我的预期.该程序遍历100 - 999的每个组合,并检查产品是否是一个palindome.如果是,请附加到列表中.我需要排序的列表:D这是我的程序:
list = [] #list of numbers
for x in xrange(100,1000): #loops for first value of combination
for y in xrange(x,1000): #and 2nd value
mult = x*y
reversed = str(mult)[::-1] #reverses the number
if (reversed == str(mult)):
list.append(reversed)
list.sort()
print list[:10]
Run Code Online (Sandbox Code Playgroud)
哪个网:
['101101', '10201', '102201', '102201', '105501', '105501', '106601', '108801',
'108801', '110011']
Run Code Online (Sandbox Code Playgroud)
显然索引0大于1.任何想法是怎么回事?我有一种感觉它与尾随/前导零有关,但我看了一眼,我看不出问题.
如果您知道谜题的来源,可以获得奖励积分:P
Luk*_*ský 23
你正在排序字符串,而不是数字.'101101' < '10201'因为'1' < '2'.更改list.append(reversed)到list.append(int(reversed)),它会工作(或使用不同的排序功能).
u0b*_*6ae 13
排序正在发挥作用.如果您打算在列表中存储整数,请参考Lukáš的建议.你也可以告诉sort如何排序,例如通过ints:
list.sort(key=int)
Run Code Online (Sandbox Code Playgroud)
key参数采用一个函数来计算一个项目,以便在所有比较中获取列表对象的位置.整数将按照您的预期进行数字比较.
(顺便说一下,list是一个非常糟糕的变量名,因为你覆盖了内置的list()类型!)