2014-01-19 110 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"] = [] 
相关问题