2

2 つの条件が満たされた場合にリスト内のインデックスを検索し、それらのインデックスを新しいリストに格納しようとしています。現時点では、条件を満たすリストのエントリを見つけることができますが、リストのインデックスを取得する方法がわかりません。

リストは次のとおりです。

[[0, 1], [1, 0], [0, 2], [1, 1], [2, 0], [0, 3], [1, 2], [2, 1], [3, 0]]

これまでの私のコード:

m2=[]
for i in range(0,len(gmcounter)):
  if countersum[i]==2 and 2 in gmcounter[i]:
    m2.append(gmcounter[i])
print m2

Countersum はリスト要素の合計を含むリストなので、これが返されます。[[0, 2], [2, 0]] そして、m2 に 2 つの条件が満たされたインデックス値を取得してもらいたいので、m1 に取得してもらいたい[4,5]

列挙関数と関係があると思いますが、それを含めようとする私の試みはこれまでのところうまくいきませんでした

どんな助けでも大歓迎です!!

4

2 に答える 2

3

あなたiはすでに2つの条件が満たされているインデックスです。

を使用するenumerate()と、おそらく と組み合わせるとzip()、より Pythonic な方法になります。

m2=[]
for i, (csum, counter) in enumerate(zip(countersum, gmcounter)):
    if csum == 2 and 2 in counter:
        m2.append(i)

または、リスト内包表記を使用して:

m2 = [i for i, (csum, counter) in enumerate(zip(countersum, gmcounter)) if csum == 2 and 2 in counter]
于 2013-05-16T11:55:52.667 に答える
1

@Martijn のように、インデックスをまったく使用せずに実行できます。または、インデックスベースの方法を使用して、必要なインデックスのリストを単純に作成することもできます。

[ i for i in range(len(gmcounter)) if countersum[i]==2 and 2 in gmcounter[i] ]

これは「Pythonic」ではなく、おそらく少し遅いので、インデックスのない方法で物事を行う方法に頭を悩ませてください。

于 2013-05-16T12:01:11.810 に答える