2016-05-10 14 views
-1

クラスの複数のインスタンスを作成し、そのメソッドを使用して出力を見つける必要があります。複数の行にコードを書くのは簡単ですが、もっと効率的な方法が必要です。基本的に、ここで私はループの中で何をしたいです。もちろんpython:ループ内の異なるインスタンスを作成する方法は?

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回のためにそれをしたい場合は...

+1

オブジェクトのリストを作成します。 –

+1

'y1 = A1.job()'をやったのですか? –

+0

はい!ありがとうございました。 – hjos

答えて

0

あなたは作ることができますあなたのすべての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)] 

それでは、これは基本的に行うことは、それそれは、xが0で、その後、yのすべての数字を通過し、そしてyは持っていると言うことですすべての数字を調べ、xを1に変更した後、すべての可能な組み合わせに達するまで、yがすべての数字を再び通過する。範囲(0,100)を作ることができますが、リスト全体を印刷すると遅れてしまうことがあります(私が誤ってhahaをしたような) これは多くの変数を持つ長いリストを作成するのに最適な方法です。

いますが、その後、私たちのように(5行目)の印刷機能を呼び出します、我々は3番目のリストを望んでいたと言う、特定の番号を呼び出すことができます:pythonは、0からカウントを開始するので

我々は2言う
print(aList[2]) 

。 これはプリントアウトされます:3番目のリストである

(0, 2) 

を、我々が望んでいたように。

print(aList[2][1]) 

、これがプリントアウトされます::

2 

我々が望んでいたまさに同じよう今、私たちは、私たちのように印刷機能を呼び出します、そのリストの2番目の項目、数2を印刷したいです。

0

と仮定します。 - ちょうどにテストされていないコード:これは1社の... 100

免責条項の間の乱数を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 

:あなたは(あなたのクラス定義の後に追加)の線に沿って何かを試みることができます一般的な考えを与える。

+0

ありがとう、私は論理を持っています。 – hjos

関連する問題