2

値のリストが 2 つあります。

f=[1,1,1,2,2,2,3,3,3]
x=[10,20,30,40,50,60,70,80,90]

ここで、f の対応するアイテムが条件を満たすすべてのアイテムを x から抽出したいと考えています。

abs(i)=1

だから私は次のようになりたい:

1 10
1 20
1 30

これまでの私のアプローチは次のとおりです。

for i in f:
    if abs(i)==1:
        for j in x:
            print i,j

しかし、これにより、fのすべての1に対してxのすべてのアイテムが得られます。

1 10
1 20
1 30
1 40
1 50
1 60
1 70
1 80
1 90
1 10
1 20
1 30
1 40
1 50
1 60
1 70
1 80
1 90
1 10
1 20
1 30
1 40
1 50
1 60
1 70
1 80
1 90

私がしなければならないさらなる条件は誰ですか?

4

5 に答える 5

1

を使用してペアで繰り返しますzip

for i,x_ in zip(f,x):
  if abs(i) == 1:
    print i, x_

numpy ファンシー インデックスの使用を検討することもできます。

>>> import numpy as np
>>> f = np.array(f)
>>> x = np.array(x)
>>> x[abs(f) == 1]
array([10, 20, 30])
于 2013-11-12T16:33:32.633 に答える