python:如何在循环中创建不同的实例?

时间:2016-05-10 23:15:28

标签: 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()
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次......

2 个答案:

答案 0 :(得分:0)

您可以列出所有A的列表以及所有Y的列表,或者甚至可以列出列表,基本上是列表中包含1个或更多列表的列表。例如

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)]

所以这基本上做的是它说x是0,然后遍历y的所有数字,y经历了所有数字,x变为1,然后y遍历所有数字再次,直到达到所有可能的组合。你可以制作范围(0,100)但是,如果你打印整个列表可能会滞后(就像我不小心做了哈哈) 因此,您可以看到这是创建包含许多变量的长列表的好方法。

但你也可以拨打一个特定的号码,比如我们想要第三个列表,然后我们将打印功能调用(第5行):

print(aList[2])

我们说两个因为python从0开始计数。 这将打印出来:

  (0, 2)

这是第三个列表,就像我们想要的那样。现在我们要打印该列表中的第二项,数字2,然后我们将打印函数称为:

   print(aList[2][1])

这将打印出来:

2

完全像我们想要的那样。

答案 1 :(得分:0)

假设python 2.7.10。你可以尝试一下(在你的类定义之后添加):

import random

[... class definition stuff ...]
nums = random.sample(xrange(1, 101), 10)
i = 0
for k in nums:
    A = test()
    print A.job('word_%s' % i, k)
    i += 1

这将以1 ... 100之间的随机数运行10次。

免责声明:未经测试的代码 - 只是为了提供一般性的想法。