0

私がやろうとしているのは、次の例よりも少し長いですが、とにかくうまくいかず、どうすればいいのかわかりません。配列に割り当てるには、ひずみ1、ひずみ2などの変数を使用する必要がありますが、まず、空のリストを割り当てようとしています[]。関数を使用しない場合、それは機能します。ブロックを数回使用する必要があるため、この機能が必要です。

def test():
    for i in xrange(11):
         v = 'strain' + '%d' % i
         vars()[v] = []

test()
strain5

Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    strain5
NameError: name 'strain5' is not defined
4

1 に答える 1

4

代わりにglobals()関数を探しています。

vars()(引数なし) は、モジュール グローバルではなくローカル名前空間である関数で、現在の名前空間を返します。

デモ:

>>> def test():
...     for i in xrange(11):
...          v = 'strain' + '%d' % i
...          globals()[v] = []
... 
>>> test()
>>> strain5
[]

ただし、変数を再考する必要があります。常に、代わりにリストまたは辞書を作成する必要があります。

strains = [[] for _ in xrange(11)]

strains[0]strains[1]などでアクセスする 11 個のネストされたリストを作成します。

于 2013-06-19T14:14:58.053 に答える