使用循环创建空列表名称

时间:2017-03-13 16:04:48

标签: python list loops syntax-error naming

初学者的问题。

我想创建几个空列表并命名它们。目前我这样做是万无一失但却很麻烦的方式,

size_list=[]
type_list=[]
floor_list=[]

我试图减少麻烦,

for item in ['size', 'type']:
    item+'_list'=[]

但是,这会导致以下错误,

    item+'_list'=[]
    ^
SyntaxError: can't assign to operator

可以轻松修复,还是应该使用其他方法创建带名称的空列表?

1 个答案:

答案 0 :(得分:4)

如果要在单独的变量中跟踪大量数据,请不要依赖相关的变量名称。在定义它们之后,您的代码将对所有这些变量执行什么操作?使用字典:

datalists = dict()
for item in ['size', 'type']:
    datalists[item] = []

<强>附录: 通过使用字典,您有一个变量包含不同标签的所有列表值(无论它们是什么)。但也许(根据您选择的名称判断)相应列表位置中的值是一起的。例如,size_list[0]可能是类型type_list[0]等元素的大小?在这种情况下,更好的设计是将每个元素表示为单个元组,dict或 自定义类的对象,并具有所有对象的单个列表。

Thing = namedtuple("Thing", ['size', 'type', 'floor'])
spoon = Thing(size=33, type='spoon', floor='green')

things = []
things.append(spoon)

无法修改元组(已命名或其他),因此可能不是您需要的。如果是这样,请使用字典而不是元组,或者编写一个简单的类。