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



我有字符串'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]

这两个数都将被转换为整型并包装在列表中:

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

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

>>> 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('.')