在Python中对小数列表进行排序

3
我有一个需要排序的列表如下: ['104.900209904', '238.501860857', '9.59893298149', '362.470027924', '419.737339973'] 我使用了 "sorted" 函数进行排序:
Block1_Video1 = sorted(Block1_Video1)

然而,这是我得到的内容:
['104.900209904', '238.501860857', '362.470027924', '419.737339973', '9.59893298149']

相比之下,这是我想要的(一个按数字排序的列表,考虑小数点):

[''9.59893298149', 104.900209904', '238.501860857', '362.470027924', '419.737339973']

我该如何完成这个任务?

你的列表是一个字符串列表,而不是数字列表。它按字母顺序排序,而不是按数字顺序排序。这就是为什么它表现得很奇怪的原因。我本来想发布答案的,但我看到有人已经赶上我了,我只是想详细说明一下。 - Cody
2个回答

10

排序需要基于列表中相应字符串的浮点数值。

Block1_Video1 = ['104.900209904', '238.501860857', '9.59893298149', '362.470027924', '419.737339973']
sorted(Block1_Video1,key=lambda x:float(x))

或者简单地使用

sorted(Block1_Video1, key=float)

1
你需要先将字符串转换为数字,这可以通过 sorted 函数的 key 参数实现:
Block1_Video1 = sorted(Block1_Video1, key=float)

或者当你将新列表分配给同一变量时,你也可以就地进行排序:

Block1_Video1.sort(key=float)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接