1

複数回実行したいコードが少しあります。それは些細なことですが、ひねりがあります。繰り返しの間に特定の方法でコードを変更したいのです。例えば:

A = 1
B = ['+','-','/'.'*','**']
C = []
for x in range(len(B)):
    C.append(A{B[x]}100)
print(C)

さて、このコードが機能せず、適切な Python 構文ではないことはわかっていますが、コードで実行したいことの単なる例ではありません。

理想的には、0 番目の要素が 1 + 100、1 番目の要素が 1 - 100、2 番目の要素が 1 / 100 などのリストとして C を取得します (Nb: NOT '1 + 100' 文字列。1 + 100 の計算結果- 101)。基本的に、定義された方法でループの反復間でコード自体を変更したいと考えています。

リスト B は非常に長いので、長いif/ステートメントを定義したくありません。elif

編集:

別の例を挙げましょう。これは私の問題により関連しています。

A = ['mom','dad','me','you','c']
B = ['a','b','something','nothing','cat']
for x in range(len(A)):
    C_{A[x]} = B[x]

次のように、5 つの新しい変数を作成したいと考えています。

Print(C_mom)
a
Print(C_dad)
b
Print(C_c)
cat

繰り返しますが、これは適切な Python 構文ではなく、このコードは機能しません。

4

1 に答える 1

2

最初に、各 string などがモジュールからインポートされた対応するメソッドを指す dict を作成'+''*'ますoperator

ここで、ループしBて dict から対応するメソッドをフェッチしops、オペランドをメソッドに渡します。

>>> from operator import add,sub,mul,div,pow
>>> ops = {'+':add,'-':sub,'/':div, '*':mul,'**':pow}
>>> B = ['+','-','/','*','**']
>>> A = 1
>>> [ops[item](A,100) for item in B]
[101, -99, 0, 100, 1]

の代わりに戻り'/': operator.truedivたい場合に使用します。ops['/'](1,100)0.010

アップデート:

Python で動的変数を作成することはお勧めできません。ここでは dict を使用することをお勧めします。

>>> A = [1,2,3,4,5]
>>> B = ['a','b','something','nothing','cat']
>>> c = {x:y for x,y in zip(A,B)}
>>> c[1]
'a'
>>> c[2]
'b'
>>> c[5]
'cat

動的変数の作成に使用globals()します (この方法は使用しないでください):

for x,y in zip(A,B):
    globals()['C'+str(x)] =y
...     
>>> C1
'a'
>>> C2
'b'
于 2013-07-02T10:40:56.097 に答える