确保角度小于360的简单循环[Python]

时间:2014-11-29 21:13:51

标签: python loops while-loop

我知道这是一个简单的问题,但我无法让它发挥作用。我有一个角度列表,我需要它们小于360度。如果角度大于360,我怎么能写一个循环来减去360?我试过了:

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

但由于某种原因,这不起作用。

2 个答案:

答案 0 :(得分:4)

要原位替换值,您需要将值替换为就地,而不是将它们复制到另一个变量:

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是生成器(或非常长的列表),您可以使用generator expression实现延迟评估:

theta_degrees = (i % 360 for i in theta_degrees)

答案 1 :(得分:1)

您可以使用列表推导更轻松地执行此操作,并使用模运算符而不是while循环。

theta_degrees = [ i%360 for i in theta_degrees ]