我想我的问题应该很常见,但我在网上找不到答案。我有一个函数,它有两个参数和两个输出。我想通过函数运行这两个参数的列表,并将输出分配给列表中的元素。让我解释一下,这两个参数在这两个列表中:
Lengths = [self.xS, self.yS, self.zS, self.Len1, self.Len2, self.Thick]
LengthsUnit = [self.xSUnit, self.ySUnit, self.zSUnit, self.Len1Unit, self.Len2Unit, self.ThickUnit]
我为通过函数运行这些参数而构造的for
循环如下所示:
for length, unit in zip(Lengths, LengthsUnit):
length, unit = ConvertToSIVarUnit(self, length, unit, 'meter', 'Length')
完成后,我希望修改列表中的内容(以self.xS
为例)。因此,第一个print语句的输出应该与最后一个不同:
Lengths = [self.xS, self.yS, self.zS, self.Len1, self.Len2, self.Thick]
LengthsUnit = [self.xSUnit, self.ySUnit, self.zSUnit, self.Len1Unit, self.Len2Unit, self.ThickUnit]
print(self.Xs)
for length, unit in zip(Lengths, LengthsUnit):
length, unit = ConvertToSIVarUnit(self, length, unit, 'meter', 'Length')
print(self.xS)
但是2print
函数的输出是相同的,因此for循环函数组合可能不起作用
您需要分配给列表元素,而不是保存列表值的变量。使用
enumerate()
获取索引不过,如果不将长度和单位保留在不同的列表中,事情可能会更容易。使用字典或元组列表将值和单位保持在一起
更改列表以影响原始对象属性是不可能的。您可以使用属性名列表而不是值,然后使用
getattr()
和setattr
相关问题 更多 >
编程相关推荐