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

时间:2015-10-16 20:29:44

标签: python list python-3.x split

我有字符串'1234.12',我想将其拆分为两个列表:[1234][12]

我知道的唯一方法是使用.split()使用[n.split() for n in '1234.12']将整个字符串放入列表中:[['1'], ['2'], ['3'], ['4'], ['.'], ['1'], ['2']] ,它给了我:

public int num;

void Start () {

    num = Random.Range (1, 5);

}

3 个答案:

答案 0 :(得分:4)

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]

答案 1 :(得分:3)

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

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

您希望结果为int,您可以在int中使用map函数:

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

请注意,在这种情况下,您可以通过简单的索引访问这些数字,而无需将每个数字放入列表中。

答案 2 :(得分:1)

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

paint(Component)

实际上等同于

# use this to filter None values in b
a, b = zip(*((x,y) for x,y in zip(a, b) if y))

# use this to filter np.nan in b
a, b = zip(*((x,y) for x,y in zip(a, b) if not np.isnan(y)))

当你遍历这样的字符串时,你最终会获得单个字符,所以我们也可以说它等同于:

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