对具有负值和正值的整数和浮点数列表进行排序?

Posted

技术标签:

【中文标题】对具有负值和正值的整数和浮点数列表进行排序?【英文标题】:Sort a list of ints and floats with negative and positive values? 【发布时间】:2012-11-10 02:17:33 【问题描述】:

我正在尝试按升序对未知值(整数或浮点数或两者)列表进行排序。即,[2,-1,1.0] 将变为 [-1,1.0,2]。不幸的是, sorted() 函数似乎不起作用,因为它似乎按绝对值降序排序。有什么想法吗?

【问题讨论】:

sorted([2,-1,1.0]) yields [-1, 1.0, 2]。你有什么问题? 【参考方案1】:

我遇到了同样的问题。答案:如果您将数字作为字符串,Python 将按绝对值对数字进行排序。因此,作为您的密钥,请确保包含一个 int() 或 float() 参数。我的工作语法是

data = sorted(data, key = lambda x: float(x[0]))

... lambda x 部分只是给出了一个函数,它输出你想要排序的东西。所以它在我的列表中取一行,找到第 0 个浮点元素,并按此排序。

【讨论】:

为了扩展您的答案,2'2' 之间的区别在于一个是整数,另一个是字符串。字符串包含数字的事实不会改变它的排序方式,因为字符串是按字典顺序排序的(就像在字典中一样),所以'-2' < '-5'(因为'-' == '-''2' < '5')。另一方面,整数是按值排序的。【参考方案2】:

除了doublefelix,下面的代码给出了字符串的绝对顺序。

siparis=sorted(siparis, key=lambda sublist:abs(float(sublist[1])))

【讨论】:

以上是关于对具有负值和正值的整数和浮点数列表进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

浮点数的十六进制表示

从点后的浮点数中取值

整数和浮点数

java中整除和浮点除啥区别

java浮点数常量是啥

将字符串浮点数列表转换为具有 2 个小数点的浮点数列表