对浮动数字的输入列表进行排序。

时间:2016-04-20 03:36:37

标签: python sorting floating-point

我试图编写一个从用户输入浮点数的代码,按升序对值进行排序。我尝试了在Stack Overflow中找到的选项,但它仍然无效。这是我的一段代码:

if option == 'f': 
    x = input() 
    y = (sorted(x, key=lambda z: float(z)))   # sort float ascending 
    print(y) 

>>> Input: 5.0 , 4.9 , 3.1, 0.5    
Output: 0.5, 3.1, 4.9, 5.0

如何获取浮点数列表并打印排序后的输出?

2 个答案:

答案 0 :(得分:3)

您需要将输入 string 拆分为单独的浮点数字符串,然后对其浮点值进行排序。以下代码在逗号上拆分并在排序之前删除任何空格:

if option == 'f': 
    x = (s.strip() for s in input().split(','))
    y = (sorted(x, key=lambda z: float(z)))   # sort float ascending 
    print(y)

输出:

['0.5', '3.1', '4.9', '5.0']

你也可以这样打印:

>>> print(', '.join(y))    # using join()
0.5, 3.1, 4.9, 5.0
>>> print(*y, sep=', ')    # Python 3 style print function
0.5, 3.1, 4.9, 5.0

答案 1 :(得分:0)

您的输入是str类型的字符串。您应该将其拆分并转换为float。 @mhawke给出了一个很好的例子。