0

私のタイトルが最高ではないことをお詫びします。これが私が達成しようとしていることです: 私はリストを持っています:

list1 = [a0_something, a2_something, a1_something, a4_something, a3_something]

エントリが次のような名前を含むタプルである別のリストがあります。

list2 = [(x1,y1,z1,'bob'),(x2,y2,z2,'alex')...]

2 番目のリストの 0 番目の名前は a0_something に対応し、2 番目のリストの 1 番目のエントリの名前は a1_something に対応します。基本的に、2 番目のリストは書き込み順ですが、1 番目のリストはそうではありません。

私が使用しているプログラムには、これを実行したい setName 関数があります

a0_something.setName(list2[0][4])

などをループします。

本当に言えるように

for i in range(len(list1)):
    a(i)_something.setName(list2[i][4])

ループで反復できるように、a#_something でその番号を参照できる方法はありますか?

4

2 に答える 2

3

いいえ。

変数名は、実行時には意味がありません。(あなたが内省をしているのでない限り、私はあなたがやるべきではないことであることを保証します。)

次のような適切なリストを使用します。

lst = [a0_val, a1_val, a2_val, a3_val, a4_val]

でアドレス指定しlst[0]ます。

または、それらの名前に意味がある場合は、dict を使用します。

dct = {
    'a0' : a0_val,
    'a1' : a1_val,
    # ...
}

で使用しdct['a0']ます。

于 2012-06-12T22:19:57.523 に答える
0

enumerate 関数を使用すると、現在のアイテムの値とインデックスを取得できます。したがって、あなたの例では、次のことができます。

for i, asomething in enumerate(list1):
    asomething.setName(list2[i][3])

list2 の長さは 4 であるため、最後の要素はインデックス 3 です (-1 も使用できます)。

于 2012-06-12T22:25:22.827 に答える