我有一个问题,我正在寻找一种解决问题的Python方法。我想做这样的事情:
def ConvertData(self):
for dataSet in [self.trainData, self.testData]:
convertedDataSet = ... do_something(dataSet) ...
dataSet = convertedDataSet
因此,我想以相同的方式转换我所有的类属性,而不为每个属性复制该代码。但是我的方法却行不通。在上面的for循环中,最后,dataSet
已正确转换。但是自然不会将其分配给self.trainData
。
什么是正确的编程方式
convertedDataSet = ... do_something(self.trainData) ...
self.trainData = convertedDataSet
convertedDataSet = ... do_something(self.testData) ...
self.testData = convertedDataSet
非常感谢! :)
编辑:我找到了getattr
和setattr
的解决方案:
def ConvertData(self):
for attr in ["trainData", "testData"]:
convertedDataSet = ... do_something(getattr(self, attr)) ...
setattr(self, attr, convertedDataSet)
但是我还是不喜欢它。这是最好的方法还是有更好的解决方案?
答案 0 :(得分:0)
您的问题与print(df)
id name gpa grade
0 1111 Phineas 3.0 B
1 1113 Tilly 2.5 C
2 1110 Andres 3.8 A
3 1112 Jax 3.2 B
4 1114 Ray 3.1 B
5 1115 Koda 2.4 C
6 1120 Bruno 3.7 A
7 1134 Davis 2.6 C
8 1102 Cassie 4.0 A
无关,仅与attr
有关。例如:
list
很明显,循环之后,numbers = [1, 2, 3]
for number in numbers:
number = 2 * number
仍然是numbers
。
要更改列表的元素,您需要使用[1, 2, 3]
:
enumerate