python:如何在循环中创建不同的实例?
我需要创建一个类的多个实例,然后使用它的方法来查找输出。用多行代码编写代码很简单,但我需要一种更有效的方法。基本上,以下是我在循环中要做的事情:python:如何在循环中创建不同的实例?,python,loops,methods,instance,names,Python,Loops,Methods,Instance,Names,我需要创建一个类的多个实例,然后使用它的方法来查找输出。用多行代码编写代码很简单,但我需要一种更有效的方法。基本上,以下是我在循环中要做的事情: class test(object): ... def job(self,x='hi',y=4): return y+len(x) A1 = test() y1 = A1.job(x = 'word_1',y=12) A2 = test() y2 = A2.job(x = 'word_2',y=5) A3 = test
class test(object):
...
def job(self,x='hi',y=4):
return y+len(x)
A1 = test()
y1 = A1.job(x = 'word_1',y=12)
A2 = test()
y2 = A2.job(x = 'word_2',y=5)
A3 = test()
y3 = A3.job(x = 'word_3',y=-12)
A4 = test()
y4 = A4.job(x = 'word_4',y=1)
A5 = test()
y5 = A5.job(x = 'word_5',y=120)
A6 = test()
y6 = A6.job(x = 'word_6',y=-1)
A7 = test()
y7 = A7.job(x = 'word_7',y=10)
当然,这并不难,但如果我想做100次…你可以列出你所有的a和Y,或者你甚至可以列出一个列表,基本上是一个包含一个或多个列表的列表。比如说
aList = [[A1, Y1], [A2, Y2], [A3, Y3]] # Note, never name lists this way haha
然后参考他们,你会说:
print(aList[1][1])
第一个1进入[A2,Y2]列表,第二个进入并接受Y2变量
这样你就不需要所有的变量了,因为你可以创建一个for循环,循环遍历所有的变量,这样就可以有无限多的列表。
例如:
aList = [] # Creates an empty list
for x in range(0, 3): # This will go over the numbers from 0-2,
for y in range(0, 3): # This will do the same.
aList.append( (x, y) )
print(aList)
这将打印出:
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
(0, 2)
2
所以它基本上是这样做的,它说x是0,然后遍历y的所有数字,y遍历了所有的数字,x变为1,然后y再次遍历所有的数字,直到达到所有可能的组合。你可以使范围(0100)虽然,可能滞后,如果你打印出整个名单(就像我不小心做了哈哈)
因此,您可以看到,这是一种创建包含许多变量的长列表的好方法
但是您也可以调用一个特定的号码,比如我们想要第三个列表,然后我们将调用print函数(第5行),如下所示:
我们说2是因为python从0开始计数。
这将打印出:
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
(0, 2)
2
这是我们想要的第三张名单。现在我们要打印列表中的第二项,数字2,然后我们将调用print函数,如下所示:
print(aList[2][1])
这将打印出:
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
(0, 2)
2
完全符合我们的要求。假设使用python 2.7.10。您可以尝试以下内容(在类定义后添加): 这将运行10次,随机数介于1。。。一百
免责声明:未经测试的代码--只是给出一个大概的想法。列出一个对象列表。你是想做
y1=A1.job()
?顺便说一句,我想你需要在decorator为你的job
方法工作。@Priyansgoel,你能详细说明一下吗?我对python非常陌生,不知道如何才能做到这一点,谢谢。