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