Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.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_String_List_Int_Type Conversion - Fatal编程技术网

Python 数字字符串到数字列表的转换

Python 数字字符串到数字列表的转换,python,string,list,int,type-conversion,Python,String,List,Int,Type Conversion,我有一根绳子 a = 2,00,02 此字符串的每个元素都有数据类型str 我想把它转换成一个列表,比如a=[2,00,02],这样a就是一个列表,a的每个元素都应该有数据类型int 我所做的是a=[a中的每一个都是inteach],这给了我a=[2,0,2],其中a是一个列表,a中的每一个都是一个整数。 但那不是我想做的。我想要a=[2,00,02],其中中间的0应该是00,最后的02应该是02,而不是0和2。 我应该怎么做呢?00与0是同一个数字 但是Python总是将这个数字表示为0,而

我有一根绳子

a = 2,00,02
此字符串的每个元素都有数据类型str

我想把它转换成一个列表,比如a=[2,00,02],这样a就是一个列表,a的每个元素都应该有数据类型int

我所做的是a=[a中的每一个都是inteach],这给了我a=[2,0,2],其中a是一个列表,a中的每一个都是一个整数。 但那不是我想做的。我想要a=[2,00,02],其中中间的0应该是00,最后的02应该是02,而不是0和2。 我应该怎么做呢?

00与0是同一个数字

但是Python总是将这个数字表示为0,而不是00。如果要保留00,则必须使用字符串:

In [56]: a = '2,00,02'

In [57]: a.split(',')
Out[57]: ['2', '00', '02']
如果要将a转换为整数列表,同时保留前导零,则需要跟踪两个列表:

In [65]: astr = a.split(',')

In [66]: astr
Out[66]: ['2', '00', '02']

In [67]: aint = map(int, astr)

In [68]: aint
Out[68]: [2, 0, 2]

In [69]: zip(astr, aint)
Out[69]: [('2', 2), ('00', 0), ('02', 2)]
使用AIT进行数值计算,使用astr进行字符串格式设置/输出

请注意,Python中的前导0用于表示八进制数:

In [62]: 011
Out[62]: 9
因为11基数8等于9

因此,如果字符串是a='2011,02',那么您需要澄清您想要的是等于[2,9,2]的整数值[2,11,2]还是[2011,02]


如果你的字符串是a='2,09,02',那么如果你把每个数字字符串转换成int,你会得到[2,9,2],但是如果你想要[2,09,02],那么你会得到一个语法错误,因为09不是一个有效的八进制数。

如果你想要它们中的每一个都是int,那么你不能期望'00'在int中存储为00。你能重新表述你的需要吗?02 == 2. 这只是输出格式的问题。默认情况下,Python不显示前导零。正在查找{:02d}.format?如果你想要一个整型数据列表,那么顺便说一下,你不能有00或02。@Sylvain是的。。我在寻找用两位数表示的方法。你需要重写这个问题,这样它才有意义。你不可能有一个字符串a=2,00,02,因为那不是一个字符串;在Python2.x中,这是一个由3个整数组成的元组,在Python3.x中是一个语法错误。此外,字符串的每个元素都是单个字符串。那么,你到底有什么?是‘a=‘2,00,02’?还是一个'2','00','02'`?或者完全不同的东西?他想要列表中的int而不是string,听起来这是不可能的。int不是用前导零保存的,对于string表示,请看这里:OP没有说这是Python 2还是Python 3;在Python 3中,前导0不再表示八进制数;这是一个语法错误。要在2.x和3.x中同时表示八进制数,请使用0o11。同时,在2.x和3.x中,将像“09”这样的字符串转换为十进制整数的方法是使用显式基数调用int:[intx,10代表astr中的x]。
In [62]: 011
Out[62]: 9
In [70]: [2, 011, 02] == [2, 9, 2]
Out[70]: True