0

条件付き for ループを作成したいのですが、配列の長さが 1 の場合は for ループの見出しを使用し、この len(array) > 1 かつ == len(array2) の場合は別の for ループの見出しを使用し、ifこれらの条件はどちらも真ではありません。選択したエラーで終了します。本当の問題は、for ループが見出しを除いて実際には同一であり、かなり長い場合、この if ステートメントと for ループを持ちたくないということです。そのため、コードを 2 倍にするのは無駄に思えます。

forループの中身を一度だけ書くだけでいい方法はありますか?

注: xarray と tarray は複数次元の numpy 配列です。つまり) xarray = array([[1,2,3],[4,5,6]])

コードのスニペットは次のようになります。

if len(tarray) > 1 and len(xarray) == len(tarray):
        for x,ts in zip(xarray,tarray):
           #stuff
if len(tarray) == 1:
        for x in xarray:
           #same stuff as above for loop
else:
        print 'Dimension Mismatch -- Quitting:'
        quit()
4

4 に答える 4

4

for ループの内容が同じである場合、両方の for ループから、共通のコードを含む関数を呼び出すことができます。

そして、条件を満たしたい場合は、ifステートメント、チェックが必要です。

于 2013-04-05T19:22:00.210 に答える
2

これはうまくいくはずです:

if len(tarray) >= 1:
    res = zip(tarray, xarray) if len(tarray) == len(xarray) else xarray
else:
    # Error message

for each in res:
    # Do some stuff 
于 2013-04-05T19:49:10.460 に答える