用于确保Angular 小于360的简单循环[Python]

hec6srdp  于 2023-01-01  发布在  Python
关注(0)|答案(3)|浏览(111)

我知道这是一个简单的问题,但我无法让它工作。我有一个Angular 列表,我需要它们小于360度。我如何编写一个循环,如果Angular 大于360,将减去360?我尝试:

for i in theta_degrees:
    while i>360:
        i -= 360

但不知道什么原因没起作用。

8nuwlpux

8nuwlpux1#

要就地替换值,需要就地替换值,而不是将其复制到另一个变量:

for i in range(len(theta_degrees)):
    while theta_degrees[i] > 360:
        theta_degrees[i] -= 360

或者你可以使用一个更短、更快、更实用的方法,使用列表解析和模运算符:

theta_degrees = [i % 360 for i in theta_degrees]

或者如果theta_degrees是一个生成器(或者一个很长的列表),你可以使用一个生成器表达式来实现惰性求值:

theta_degrees = (i % 360 for i in theta_degrees)
kgsdhlau

kgsdhlau2#

使用列表解析和模运算符(而不是while循环)可以更容易地做到这一点。

theta_degrees = [ i%360 for i in theta_degrees ]
eblbsuwk

eblbsuwk3#

如果您使用的是Numpy数组,则也应该可以执行以下操作:

a[a >= 360] -=360

相关问题