输入()的奇怪的.split()问题

时间:2016-02-08 03:09:03

标签: python python-3.x

我有一些代码将数字与输入()的空格分开。我试着在它上面调用.split(),但由于某种原因它将[56 78 90 1 2 3]变成了[78.0,90.0,1.0,2.0]。感谢

def insert(self, lst):
    for x in lst.split():
        try:
            self.theList.append(float(x))
        except:
            3+4

3 个答案:

答案 0 :(得分:1)

“某些原因”是您正在调用float,将值转换为float类型。

答案 1 :(得分:0)

这样做是因为你使用的是float(x)。如果所有数字都是整数,请使用整数值。否则,使用float函数时可能会产生额外的小数位。

答案 2 :(得分:0)

您从字符串lst = "[56 78 90 1 2 3]"开始。它由分配给['[56', '78', '90', '1', '2', '3]']的空格分开。注意第一个和最后一个元素中的括号!

然后,您将每个元素解释为在float('[56')float('3]')上失败的浮动,导致程序进入您小心选择不使用的except案例。

以下是如何将整数字符串转换为可以迭代的正确列表,以便您可以将数字重新解释为浮点数,无论出于何种原因:

import ast
ast.literal_eval(lst.replace(" ", ", ")

为什么你要将一堆整数作为字符串传递?你能在代码中显示"[56 78 90 1 2 3]"出现的位置吗?