Python.sort()不能按预期工作

2024-05-15 01:49:51 发布

您现在位置:Python中文网/ 问答频道 /正文

在一个安静的周六晚上解决一些难题(哇哦哦。。。不是)并且我正在与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


Tags: ofin程序列表for产品valuesort
3条回答

您的列表包含字符串,因此它按字母顺序对它们进行排序-尝试将列表转换为整数,然后进行排序。

Sort正在做它的工作。如果您打算在列表中存储整数,请接受卢卡斯的建议。您还可以告诉sort如何排序,例如通过生成int:

list.sort(key=int)

key参数接受一个函数,该函数计算要在所有比较中取代list对象的项。整数将按预期进行数字比较。

(顺便说一下,list是一个非常糟糕的变量名,因为您重写了内置的list()类型!)

你在排序字符串,而不是数字。'101101' < '10201'因为'1' < '2'。将list.append(reversed)更改为list.append(int(reversed)),它将工作(或使用不同的排序功能)。

相关问题 更多 >

    热门问题