Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用浮动问题_Python_List_Floating Point_Tuples - Fatal编程技术网

Python 使用浮动问题

Python 使用浮动问题,python,list,floating-point,tuples,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 d

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

我可以得到它,使它与一个整数一起工作,但是当数字是一个浮点数时,我似乎无法使函数工作

到目前为止,我知道:

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])


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

我会使用
分区将数字分为整数和小数部分。这甚至适用于没有小数点的数字。然后,您可以使用当前代码并以类似于第二个列表的方式生成第三个列表

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)
结果:

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


编辑:对于负数和不含整数部分的浮点,可以使用一些额外的特殊大小写

def divide(x):
    if x < 0: 
        x = -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]
    if first == [0] and third:
        first = []
    return first, second, third
def divide(x):
如果x<0:
x=-x
左,右=str(x).partition(“.”)
first=[int(左[0])]
second=[int(i)表示左侧的i[1:]
第三个=[int(i)表示右侧的i]
如果第一个==[0]和第三个:
第一个=[]
返回第一,第二,第三

我不知道你想要什么样的输出。也许包括一些int和float的示例?@ZoffDino我编辑了我的问题,谢谢!你需要处理负数吗?在这种情况下,输出是什么样子的?它将输出与正数相同的结果。(它将删除“-”号)为什么如果我使用整数,它会在末尾生成一个空列表,但当我键入浮点时,它会输出([0],[0],[2,3,5])?因为我希望它在没有元素进入指定列表时生成空列表。因为.235的字符串表示在小数点之前有一个零:“0.235”。但它在我的机器上生成
([0],[2,3,5])
,而不是
([0],[0],[2,3,5])
。如果没有0,我如何让函数打印?有办法吗?如果您希望
除法(0.235)
返回
([0],[2,3,5])
,并且希望
除法(.235)
返回
([],[],[],[],[2,3,5]))
。从Python的角度来看,.235和0.235完全相同。我希望0.235和.235输出相同的内容:([]、[]、[2、3、5])