Python如何使用浮点值对列表进行排序

时间:2016-05-19 09:06:11

标签: python list sorting

如何对包含浮点值的python列表进行排序

list1 = [1, 1.10, 1.11, 1.1, 1.2] 

list1 = ['1', '1.10', '1.11', '1.1', '1.2'] 

预期结果是

list_val = ['1', **'1.1', '1.2'**, '1.10', '1.11']

但使用sort()方法返回的结果返回

[1, 1.1000000000000001, 1.1000000000000001, 1.1100000000000001, 1.2]

['1', '1.1', '1.10', '1.11', '1.2'].

但是,此处1.2应该介于1.11.10之间。

4 个答案:

答案 0 :(得分:10)

您可以使用:

list1 = sorted(list1)

如果它是第二种格式(作为字符串),您可以使用key参数将其转换为浮点数:

list1 = sorted(list1, key=float)

key参数需要一个函数,它将在使用转换值进行排序之前转换值,但保留原始值

答案 1 :(得分:1)

您可以通过两种方式对任何列表进行排序。

  • 使用排序方法::在此,排序方法将返回排序列表,但实际列表保持不变

    x=[1,2,3.1,4.5,2.3]
    y = sorted(x)
    y = sorted(x,key=float) #in case if the values were there as string.
    

    在这种情况下,x仍然保持为[1,2,3.1,4.5,2.3],其中将返回排序列表,即[1,2,2.3,3.1,4.5],在这种情况下将被分配给年。

  • 使用为lists ::提供的 sort 方法调用,在此方法中,sort方法调用将对实际列表进行排序

    x=[1,2,3.1,4.5,2.3]
    x.sort()
    

    在这种情况下,x将被排序,因此如果您尝试打印x,它将类似于[1,2,2.3,3.1,4.5]。

您可以根据自己的要求使用这些方法。

希望它有所帮助。快乐编码:)

答案 2 :(得分:0)

只需使用sorted

sorted(list1, key=float)

这会在比较之前将元素转换为float,因此它既可以用于字符串列表,也可以用于浮点数列表(或者用于它的价值)。

答案 3 :(得分:-1)

使用sort()方法。

list1.sort()
print(list1)