2017-03-23 4 views
1

3つの数値のリストを同時にループし、変数の組み合わせごとに計算したい。 これで、計算されたすべてのデータを後で3次元データフレームに保存できます。3つの変数の配列を同時にループする

私が試した:

for (x,y,z) in [(x, y, z) for x in a for y in b for z in c]: 
をこれが動作していない、それだけで、xとyの各値に対して計算を実行するが、Zではありません。

どのように私も同時にループすることができます任意のアイデア?

+0

ようこそStackOverflow。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)がここに適用されます。 MCVEコードを投稿して問題を正確に記述するまでは、効果的にお手伝いすることはできません。 – Prune

+0

あなたが提供している1つのステートメントは、適切なサポートがあれば、うまく動作します。 Pawelが与えた答えと同等であることに注意してください。 – Prune

答えて

5

ジップ使用についての方法:具体的な例と

for x, y, z in zip(a, b, c): 
    # Do something 

アップデートを

users = ['alex', 'john'] 
uids = [502, 501] 
shells = ['bash', 'tcsh'] 

for user, uid, shell in zip(users, uids, shells): 
    print('User: {}, UID: {}, Shell: {}'.format(user, uid, shell)) 

出力:あなたはすべての組み合わせをしたい場合

User: alex, UID: 502, Shell: bash 
User: john, UID: 501, Shell: tcsh 
+0

私は彼が対応するインデックスを望んでいないと思う。私は彼がすべてのバリエーションを望んでいると思う。 – BoobyTrap

+0

これは私が質問を理解した方法です。 OPがそうでない場合は、Pawelのソリューションを使用する必要があります。 –

+0

これは私が探していたものではなく、ZIPは各文字列の同じ場所に整数を取ります。あらゆる可能な組み合わせが欲しいです。 –

1

、使用itertools.product

from itertools import product 
for x, y, z in product([1, 2], ['A', 'B'], [3, 4]): 
    print(x, y, z) 
0

私が実際に使用しようとしたコードを思い出します。ちょうど私のすべての入力を列挙しなければならなかった。

for (x,y,z) in [(x, y, z) for x in a for y in b for z in c]:

これは、3次元よりもさらににデータフレームのためにこれを使用することが可能です。 itertools.productは、多次元配列for-loopsでも機能するはずです。

回答ありがとうございます。

関連する問題