下面我有一些代码根据元组 tup 中的值来分配值。 现在这段代码对我的口味来说太重复了,我希望能够使用循环。
段:
self.Levels = tup[0]
self.MaxX = tup[1]
self.MaxY = tup[2]
self.BW = tup[3]
我想按照以下方式做点什么;但是,这显然在语法上不适用于python。
nametup = (self.Levels, self.MaxX, self.MaxY, self.BW)
for i in range(len(tup)):
nametup[i] = tup[i]
修改
我必须将我的代码段更改为:
if tup[0] != None:
self.Levels = tup[0]
if tup[1] != None:
self.MaxX = tup[1]
if tup[2] != None:
self.MaxY = tup[2]
if tup[3] != None:
self.BW = tup[3]
根据我的理解,if语句会给解压元组的想法带来麻烦。有什么建议?
答案 0 :(得分:5)
试试这个:
self.Levels, self.MaxX, self.MaxY, self.BW = tup
它被称为解包元组。
答案 1 :(得分:2)
基于修订后的片段:
attrs = ('Levels', 'MaxX', 'MaxY', 'BW')
assert len(tup) == len(attrs)
for attr, val in zip(attrs, tup):
if val is not None: # don't use !=
setattr(self, attr, val)
答案 2 :(得分:0)
这是一个漫长的过程,但为了比较:
attrs = ('Levels', 'MaxX', 'MaxY', 'BW')
for attr,val in zip(attrs,tup):
setattr(self, attr, val)