字符串变成数组,不需要拆分[关闭]

问题描述 投票:0回答:1

假设我有以下字符串。

myStr = "1,2 3,4 5,6"

我想用它建立下面的嵌套列表。

[[1, 2],
[3, 4],
[5, 6]]

我知道我可以用split,然后用for循环来建立这个列表 但在Python中有没有其他更简单的方法,不用split?也许用反结构或其他方法。

比如像这样。

[ [a, b] for [["%a,%b"]] in str ]

python arrays string destructuring
1个回答
1
投票

一个笨拙的解决方案--但没有任何显式循环或分割,如要求的那样。

import re
list(map(lambda x: list(map(int, x)),
         re.findall(r"(\d+),(\d+)",s)))
#[[1, 2], [3, 4], [5, 6]]

1
投票

没有使用 split(),你可以试试。

import re
s = "1,2 3,4 5,6"
l = list(map(lambda x:[int(x[0]),int(x[2])],re.findall(r".,.",s)))
# [[1, 2], [3, 4], [5, 6]]

演示


1
投票
s = "1,2 3,4 5,6"
l = [[int(s[i]), int(s[i+2])] for i in range(0,len(s),4)]
print(l)  # [[1, 2], [3, 4], [5, 6]]

0
投票

如果你只是在寻找一个聪明的方法(哪怕是一个糟糕的方法),这里有一个想法。

s = "1,2 3,4 5,6"

a = eval(f"[[{s}]]".replace(" ","],["))

print(a,type(a),type(a[0]),type(a[0][0])))
# [[1, 2], [3, 4], [5, 6]] <class 'list'> <class 'list'> <class 'int'>
© www.soinside.com 2019 - 2024. All rights reserved.