我知道這個主題有類似的帖子,但是它們通常關注串列項是字母,因此結果通常意味著它們用雙引號引起來。
但是,我正在處理數字串列,我一直無法找到解決我需要轉換數字串列串列的字串表示形式的解決方案......
"[1,2,3,4,5,6],[5,1,4,6,3,2],[3,6,4,1,5,2]"
...變成一個實際list的數字lists,正如我所提到的,我正在處理數學的數字專案。
list_string = "[1,2,3,4,5,6],[5,1,4,6,3,2],[3,6,4,1,5,2]"
ini_list = "[" list_string "]"
goal = list(ini_list)
print(goal)
#Desired Outcome:
#goal = [[1,2,3,4,5,6],[5,1,4,6,3,2],[3,6,4,1,5,2]]
uj5u.com熱心網友回復:
一個非常簡單(并且安全/穩健)的方法是使用該ast.literal_evel函式。
在這種情況下,該ast.literal_eval函式是一種評估字串并將其轉換為預期型別的??安全方法,因為該函式中有邏輯可以幫助消除評估惡意代碼的風險。
采用:
import ast
list_string = "[1,2,3,4,5,6],[5,1,4,6,3,2],[3,6,4,1,5,2]"
result = ast.literal_eval(f'[{list_string}]')
輸出:
[[1, 2, 3, 4, 5, 6], [5, 1, 4, 6, 3, 2], [3, 6, 4, 1, 5, 2]]
uj5u.com熱心網友回復:
您可以使用exec()執行 python 代碼的函式。
>>> exec("a = [[1,2,3,4,5,6],[5,1,4,6,3,2],[3,6,4,1,5,2]]")
>>> a
[[1, 2, 3, 4, 5, 6], [5, 1, 4, 6, 3, 2], [3, 6, 4, 1, 5, 2]]
uj5u.com熱心網友回復:
如果您采用 list(string) ,您只會將字串拆分為字符。例如list('[1, 2]')= ['[', '1', ',', ' ', '2', ']']。
但是您擁有的是一個包含 python 文字的字串(一段描述值的代碼)。你需要把它變成實際價值。為此,有eval功能。所以就做吧goal = eval(ini_list)。希望我對你有所幫助。
uj5u.com熱心網友回復:
這是使用串列推導和 的一種更快的方法split():
list_string = "[1,2,3,4,5,6],[5,1,4,6,3,2],[3,6,4,1,5,2]"
goal = [[int(num) for num in sublist.split(",")] for sublist in list_string[1:-1].split("],[")]
print(goal) # [[1, 2, 3, 4, 5, 6], [5, 1, 4, 6, 3, 2], [3, 6, 4, 1, 5, 2]]
- 我們在 each 處分隔字串
],[,以檢索不同的子串列。 - 然后,我們將每個子串列分開
,,最后將分開的數字轉換為整數。
for 回圈的替代方案是:
goal = []
for sublist in list_string[1:-1].split("],["):
new_sublist = []
for num in sublist.split(","):
new_sublist.append(int(num))
goal.append(new_sublist)
print(goal)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/452139.html
