2016-09-17 8 views
0

rad,relative_x,relative_yという配列があります。ここで、radのサイズは他の2つと同じではありません。ループのない配列の設定値

masking[i] = (relative_x**2 + relative_y**2 <= (rad[i])**2) & (relative_x**2 + relative_y**2 >= (rad[i]*0.9)**2) 

が、私はループせずにそれをしたい:私は、次のようにradの長さを持つことになりますmaskingという配列を作成します。これはPythonでこれを行う方法はありますか?

+0

まず、リストの理解を使用しても、ループはとにかく発生します。第二に、配列の長さが異なる場合、どうやってそれを行う予定ですか? – galah92

答えて

0

zip()とリスト了解かなりです。あなたはまだループがありますが、やや隠れています。

>>> rad = [1.42, 4, 8] 
>>> relative_x = [1, 2, 3, 4, 5] 
>>> relative_y = [1, 2, 3, 4, 5] 
>>> 
>>> masking = [rad_**2 >= relative_x_**2 + relative_y_**2 >= (rad_*0.9)**2 
       for (rad_, relative_x_, relative_y_) in zip(rad, relative_x, relative_y)] 
>>> print masking 
[True, False, False] 

pythonでは、1 < 2 < 3を許可しています。

関連する問題