设置没有循环的数组的值

时间:2016-09-17 07:33:18

标签: python arrays

我有一个名为radrelative_xrelative_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中执行此操作?

1 个答案:

答案 0 :(得分: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