如何对包含浮点值的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.1
和1.10
之间。
答案 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)