2011-11-23 6 views
13

のインデックスはのは、私は2つのリストを持っているとしましょう取得:pythonのすべての可能な2つのリスト要素のペア、およびそのペア

a = list(1,2,3) 
b = list(4,5,6) 

だから私はこれらのリストのメンバーの9組持つことができます。

(1,4) 
(1,5) 
(1,6) 

(2,4) 
(2,5) 
(2,6) 

(3,4) 
(3,5) 
(3,6) 

上記のような2人のリストのメンバーがあれば、ペアのインデックスを見つけることはできますか? 上から(1,4)のように第1のペアになります。

+0

あなたは 'と呼ばれるがlist() 'コンストラクタを間違った方法で呼び出すことができます。 'list()'を呼び出すのではなく、 '[1,2,3]'を使う方が簡単です。 –

+0

こんにちは。私はlist()がprint()がprint(for Python 2.x)のリストと同じだと思った? –

+0

この方法では動作しません。 ['list()'は1つの引数しか期待していません。](http://ideone.com/576XG) –

答えて

23

そして、答えを完了し、例に滞在する:

import itertools 

a = [1, 2, 3] 
b = [4, 5, 6] 
c = list(itertools.product(a, b)) 

idx = c.index((1,4)) 

しかし、これは、ゼロベースのリストインデックス、これを行うにはそれほど0の代わりに、1

+0

ねえ。最初に組み合わせのリストを作成せずに可能ですか? –

+0

itertools関数を使用するだけで、プレーンなイテレータが得られます。もちろんそれ以上の繰り返しができ、目的のタプルが到着するまで待って、反復回数を数えます。または、最初のリストの最初の値のインデックスと2番目のリストの2番目の値のインデックスを見つけて、単純に計算を開始することができます:) –

8

一つの方法になります。

  1. あなたが最初のリストで探しているペアの最初の要素を検索:

    p = (1, 4) 
    i = a.index(p[0]) 
    
  2. あなたが第二のリストで探しているペアの2番目の要素の検索:

    j = b.index(p[1]) 
    
  3. 計算に製品リストのインデックス:

    k = i * len(b) + j 
    
関連する問題