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

sat*_*ish 6 python sorting list

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

list1 = [1, 1.10, 1.11, 1.1, 1.2] 
Run Code Online (Sandbox Code Playgroud)

要么

list1 = ['1', '1.10', '1.11', '1.1', '1.2'] 
Run Code Online (Sandbox Code Playgroud)

预期的结果是

list_val = ['1', **'1.1', '1.2'**, '1.10', '1.11']
Run Code Online (Sandbox Code Playgroud)

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

[1, 1.1000000000000001, 1.1000000000000001, 1.1100000000000001, 1.2]
Run Code Online (Sandbox Code Playgroud)

要么

['1', '1.1', '1.10', '1.11', '1.2'].
Run Code Online (Sandbox Code Playgroud)

但是,在这里1.2应该进来之间1.11.10.

Jan*_*egt 10

您可以使用:

list1 = sorted(list1)
Run Code Online (Sandbox Code Playgroud)

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

list1 = sorted(list1, key=float)
Run Code Online (Sandbox Code Playgroud)

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


Seb*_*zny 2

只需使用sorted

sorted(list1, key=float)
Run Code Online (Sandbox Code Playgroud)

这会将元素转换为float比较之前的值,因此它适用于字符串列表或浮点数列表(或整数,就其价值而言)。