Python 有没有一种更短的方法来分配这些变量?
假设我的程序启动时需要声明以下变量:Python 有没有一种更短的方法来分配这些变量?,python,variables,Python,Variables,假设我的程序启动时需要声明以下变量: Pos_List = [] Room_List = [] Type_List = [] Spec_List = [] Sub_List = [] Rtr_List = [] IPa_List = [] MAC_List = [] 目前要做到这一点,我已经完全如上图所示。我的问题是,有没有一种更短的方法可以做到这一点,或者甚至可以在一条线上做到这一点?在我的程序中有好几次发生这种事情,它占用了很多空间。有什么建议吗?谢谢。您可以尝试以下方法: Po
Pos_List = []
Room_List = []
Type_List = []
Spec_List = []
Sub_List = []
Rtr_List = []
IPa_List = []
MAC_List = []
目前要做到这一点,我已经完全如上图所示。我的问题是,有没有一种更短的方法可以做到这一点,或者甚至可以在一条线上做到这一点?在我的程序中有好几次发生这种事情,它占用了很多空间。有什么建议吗?谢谢。您可以尝试以下方法:
Pos_List, Room_List, Type_List, Spec_List, Sub_List, Rtr_List, IPa_List, MAC_List = [], [], [], [], [], [], [], []
我建议您遵循:
pos\u list
而不是pos\u list
实际上,您应该使用更合理的数据结构,如
lists = {"Pos": [], "Room": [], "Type": [],...}
而不是所有这些非常相似的名字。。请尝试以下方法:
Pos_List, Room_List, Type_List, Spec_List, Sub_List, Rtr_List, IPa_List, MAC_List = [[]for _ in range(8)]
所有这些答案都有点疯狂
for name in "Pos Room Type Spec Sub Rtr IPa MAC".split():
globals()[name+"_List"] = []
是的,那会有用的。我想[]*8也会,但它只返回一个空列表。谢谢,很好地解决了问题。我只是想澄清一下,因为我是python新手,命名约定的问题仅仅是关于大写字母的使用吗?最重要的是:类名称,如
CapWords
。变量和方法,如variable\u name
或method\u name()
,有关详细信息,请阅读我发布的链接。@tayfun:您要做的是[[]]*8
,它返回一个包含8个空列表的列表。除了它实际上返回了8次相同的空列表,这可能不是你想要的。在这种情况下:[[]对于范围(8)]
。虽然这可能不是做我想做的事情的“最佳”方式,但我将按照Christian建议的原始方式去做,因为我最了解它,并且我不希望在程序的其余部分看到需要的编辑。感谢所有提供建议的人强制性链接:另一种选择可能是collections.defaultdict(list)
,OP不必担心预先初始化类型。。。他们只是使用它们…或者列表={name:[]作为“Pos”,“Room”,“Type”)}
,而不是反复重复[]
。