繁体   English   中英

如何将浮点数字符串拆分为两个列表?

[英]How to split a float number string into two lists?

我有字符串'1234.12' ,我想把它分成两个列表: [1234][12]

我知道的唯一方法是使用带有理解的.split()将整个字符串变成一个列表: [n.split() for n in '1234.12'] ,这给了我:

[['1'], ['2'], ['3'], ['4'], ['.'], ['1'], ['2']]
s = '1234.12'

a,b = ([int(x)]  for x in s.split(".",1))

print(a,b)

或者只是分为两部分,映射到int并在以下之后包装列表:

s = '1234.12'

a, b = map(int,s.split(".", 1))

a,b = [a],[b]

这将为您提供转换为int并包含在列表中的两个数字:

a -> [1234]
b ->  [12]

您可以使用点分割字符串,使用n使用map函数将结果转换为list:

>>> map(list,s.split('.'))
[['1', '2', '3', '4'], ['1', '2']]

而且你想把结果作为int你可以在map使用int函数:

>>> map(int,s.split('.'))
[1234, 12]

请注意,在这种情况下,您可以使用简单的索引访问数字,而不需要将每个数字放在列表中。

要解释你为什么尝试不起作用,

n.split() for n in '1234.12'

实际上相当于

for n in '1234.12':
    n.split()

当你迭代这样的字符串时,你最终会获得单个字符,所以我们也可以说它相当于:

for n in ('1', '2', '3', '4', '.', '1', '2'):
    n.split()

因此,由于split一次只给出一个字符,所以它不起作用。 您想将拆分移动到字符串本身:

n for n in '1234.12'.split()

此时你不再需要理解了。

'1234.12'.split()

最后一块是其他地方所解释... split ,默认情况下,按空白进行分割,所以要告诉它各执一段代替:

'1234.12'.split('.')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM