2014-01-19 109 views
0

說我的程序需要聲明以下變量在啓動時:有沒有更簡單的方法來分配這些變量?

Pos_List = [] 
Room_List = [] 
Type_List = [] 
Spec_List = [] 
Sub_List = [] 
Rtr_List = [] 
IPa_List = [] 
MAC_List = [] 

目前要做到這一點,我有整整如上圖所示。我的問題是,有沒有更簡單的方法來做到這一點,甚至是一種方法來完成這一切?在我的程序中有幾次發生這種事情,並且佔用了很多空間。有什麼建議麼?謝謝。

+5

強制性鏈接:讓您的數據從你的變量名(http://nedbatchelder.com/blog/ 201112/keep_data_out_of_your_variable_names.html) – roippi

回答

1

你可以嘗試以下方法:

Pos_List, Room_List, Type_List, Spec_List, Sub_List, Rtr_List, IPa_List, MAC_List = [], [], [], [], [], [], [], [] 

我建議你遵循Python naming conventions:中Pos_List

+0

是的,這將工作。我雖然[] * 8也會,但它只返回一個空的列表。 – tayfun

+0

謝謝,很好地清理事情。只是爲了澄清,因爲我是python的新手,命名約定問題就是關於使用大寫字母的問題嗎? – qwerty22

+0

最重要的是:像CapWords這樣的類名。變量和方法(如'variable_name'或'method_name()')的詳細信息請閱讀我發佈的鏈接。 – Christian

5

其實pos_list相反,你應該使用一個更明智的數據結構像

lists = {"Pos": [], "Room": [], "Type": [],...} 

而不是所有這些非常相似的名字。

+3

另一種可能是'collections.defaultdict(list)'和OP不擔心預先初始化類型......他們只是使用它們... –

+3

或'lists = {name:[] for name in( 「Pos」,「Room」,「Type」)}',而不是一遍又一遍地重複'[]'。 – abarnert

0

而且有點瘋狂除了所有這些問題的答案

for name in "Pos Room Type Spec Sub Rtr IPa MAC".split(): 
    globals()[name+"_List"] = [] 
相關問題