我花了很长时间寻找是否有类似的问题。不幸的是,我不能只对之前提出的问题发表评论,看看为什么我的尝试没有奏效。在这个网站上存在一个问题,一个人想要根据最接近特定值的数字对列表进行排序。他的例子:不是逐字复制他的例子,而是提出一个可行的解决方案
list_x = [1,2,5,11]
list_x.sort(key = lambda x: abs(x-4))
这将返回按最接近 4 的值排序的列表(5,2,1,11)
但是,当尝试按最接近零的值对更大的列表进行排序时,这发生在我身上:
listA.sort(key = lambda x: abs(x))
Traceback (most recent call last):
File "<pyshell#382>", line 1, in <module>
listA.sort(key = lambda x: abs(x))
File "<pyshell#382>", line 1, in <lambda>
listA.sort(key = lambda x: abs(x))
TypeError: bad operand type for abs(): 'str'
我到底做错了什么,这会阻止列表按绝对值排序?
这是组成 listA 的输入数据
for i in decrange(0, 13, i):
code = (func(seq, float(i)))
codes = '%.3f' % code
listA.append(float(codes))
listB.append(str(codes))
listA.sort(key = lambda k: abs(k))
x = listA[0]
answer = listB.index(x) * float(.01)