我知道这是一个简单的问题,但我无法让它发挥作用。我有一个角度列表,我需要它们小于360度。如果角度大于360,我怎么能写一个循环来减去360?我试过了:
for i in theta_degrees:
while i>360:
i -= 360
但由于某种原因,这不起作用。
答案 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 ]