使用Float问题

时间:2015-10-14 14:42:17

标签: python list floating-point tuples

我想写一个定义,这样当我输入一个数字时,我想将它分成一个元组内的不同列表。

我可以得到它以便它可以使用整数,但是当数字是浮点数时,我似乎无法使函数起作用。

到目前为止,我知道:

First=[]
Second=[]
Third=[]

First.append([int(i) for i in str(number)][0])
Second.append([int(i) for i in str(number)][1:])

第三个元组我希望小数点后的任何数字都在第三个= []中。

def divide(numbers):

然后在结束时我知道我会     打印((第一,第二,第三)

我的写作功能非常糟糕,所以对于如何形成这个功能的任何帮助都将非常感激。我正在使用Python。

编辑: 我想将(123456)除以([1],[2,3,4,5,6],[])的输出 除以(123.456)得到([1],[2,3],[4,5,6])

的输出

较大数字中的第一个数字将始终进入其自己的列表,然后是另一个列表,其背后的任何内容(但在小数点之前),然后是最后一个列表,我想拥有任何内容在小数点后面。一个元组中应该总是有三个列表。

1 个答案:

答案 0 :(得分:2)

我会使用val rowRDD = rdd.map(p => Row(p(0), p(1), p(2),p(3),p(4),p(5).trim)) 将数字分成整数和小数部分。即使对于没有小数点的数字,这也适用。然后你可以使用当前的代码基本不变,并以类似于第二个的方式生成你的第三个列表。

partition

结果:

def divide(x):
    left, _, right = str(x).partition(".")
    first = [int(left[0])]
    second = [int(i) for i in left[1:]]
    third = [int(i) for i in right]
    return first, second, third

print divide(123456)
print divide(123.456)

请注意,这仅适用于" nice"浮点数,其字符串表示只是一系列数字和一个可选的小数点。例如,它不适用于([1], [2, 3, 4, 5, 6], []) ([1], [2, 3], [4, 5, 6]) float("inf")

编辑:您可以为负数和浮点数添加一些额外的特殊外壳,而不包含整数部分。

5e301