2016-09-17 29 views
0

我有一個名爲rad,relative_x,relative_y的數組,其中rad的大小與其他兩個不一樣。我想創建一個名爲masking數組,這將在以下方式中rad長度:設置一個沒有迴路的數組的值

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

,但我想這樣做沒有環。有沒有辦法在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

相關問題