假设我有以下字符串。
myStr = "1,2 3,4 5,6"
我想用它建立下面的嵌套列表。
[[1, 2],
[3, 4],
[5, 6]]
我知道我可以用split,然后用for循环来建立这个列表 但在Python中有没有其他更简单的方法,不用split?也许用反结构或其他方法。
比如像这样。
[ [a, b] for [["%a,%b"]] in str ]
一个笨拙的解决方案--但没有任何显式循环或分割,如要求的那样。
import re
list(map(lambda x: list(map(int, x)),
re.findall(r"(\d+),(\d+)",s)))
#[[1, 2], [3, 4], [5, 6]]
没有使用 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]]
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]]
如果你只是在寻找一个聪明的方法(哪怕是一个糟糕的方法),这里有一个想法。
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'>