帮我清理一点Python鳕鱼

2024-07-04 05:10:02 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是一段代码,它根据tupletup中的值来赋值。 现在这段代码对我来说太重复了,我希望能够使用循环。你知道吗

代码段:

    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语句给解包元组的想法带来了麻烦。有什么建议吗?你知道吗


Tags: 代码selfnoneif代码段事情bwlevels
3条回答

根据修改后的片段:

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)

这是一个漫长的过程,但作为比较:

attrs = ('Levels', 'MaxX', 'MaxY', 'BW')
for attr,val in zip(attrs,tup):
    setattr(self, attr, val)

试试这个:

self.Levels, self.MaxX, self.MaxY, self.BW = tup

这叫做解包元组。你知道吗

相关问题 更多 >

    热门问题