在一个安静的周六晚上解决一些难题(哇哦哦。。。不是)并且我正在与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]
哪个网:
['101101', '10201', '102201', '102201', '105501', '105501', '106601', '108801',
'108801', '110011']
显然索引0大于1。知道怎么回事吗?我觉得这和尾随/前导零有关,但我看了一眼,就看不出问题了。
如果你知道拼图的来源,就可以获得额外积分:p
您的列表包含字符串,因此它按字母顺序对它们进行排序-尝试将列表转换为整数,然后进行排序。
Sort正在做它的工作。如果您打算在列表中存储整数,请接受卢卡斯的建议。您还可以告诉sort如何排序,例如通过生成int:
key参数接受一个函数,该函数计算要在所有比较中取代list对象的项。整数将按预期进行数字比较。
(顺便说一下,
list
是一个非常糟糕的变量名,因为您重写了内置的list()类型!)你在排序字符串,而不是数字。
'101101' < '10201'
因为'1' < '2'
。将list.append(reversed)
更改为list.append(int(reversed))
,它将工作(或使用不同的排序功能)。相关问题 更多 >
编程相关推荐