我知道這可能是一個壞主意..但似乎是在創建所有可能選項之外做到這一點的最佳方法,並忽略了未使用的結果。我有一個包含12個潛在值的源文件。動態創建變量(對於列表)
我在列表中已經有了所有必需的字符串,但是我打算讓每個字符串都是列表本身的開始,如果這有什麼意義呢?
例如當前列表包含 「A,B,C,d,e」 的循環中所要求的輸出將是 'A = [] .. B = []' 等
我知道這可能是一個壞主意..但似乎是在創建所有可能選項之外做到這一點的最佳方法,並忽略了未使用的結果。我有一個包含12個潛在值的源文件。動態創建變量(對於列表)
我在列表中已經有了所有必需的字符串,但是我打算讓每個字符串都是列表本身的開始,如果這有什麼意義呢?
例如當前列表包含 「A,B,C,d,e」 的循環中所要求的輸出將是 'A = [] .. B = []' 等
假設你的意思不是「開始的列表」,而是「名稱的列表」(如你的代碼所暗示的)...是的,這是一個壞主意。你或許應該使用dict
代替,像
d = {var_name: [] for var_name in current_list}
其實,這是什麼樣的Python做幕後。當你寫
a = []
那麼Python是增加一個條目a: []
到(東西基本上等同於):dict
。如果在模塊範圍內,則可以使用globals()
函數查看該字典中的內容,如果在函數內,則可以查看locals()
中的內容。
對不起,我是指名單的名字。感謝您的回覆:) – TrueSlawter
我做不是建議通過動態生成變量來污染你的名字空間。這可能特別與大型列表失控。你應該使用字典來代替。
In [941]: d = {x : [] for x in 'abcde'}; d
Out[941]: {'a': [], 'b': [], 'c': [], 'd': [], 'e': []}
看看這是多麼容易創建和維護。
感謝您的回覆,我使用的列表將只包含最多12個值,因爲在進入此階段之前,可以說「源列表」已被「設置」以消除任何重複 – TrueSlawter
@TrueSlawter仍然,爲什麼排除字典?當然,你可能會污染'globals()'或使用'eval',但不推薦這些。 –
「list」的'list'怎麼樣? – EsotericVoid