如何在Python中优雅地编写这个?

Joa*_*nge 1 python iteration loops

我试图用Python编写这个循环但是感到困惑.基本上我有一个起始角度90,我想使用-90到90的范围,迭代10次.循环完成后,我想将角度除以一半,并重复使用-45到45,10次迭代等过程.

必须包含结束值,因此90是第一个循环的最后一个值,然后45是第二个循环的最后一个值,等等.

如何在Python中优雅高效地编写这个?

startAngle = 90
for i in range(5):
    for x in range(10):
        print values from -startAngle to startAngle (startAngle included)
    startAngle = startAngle / 2
Run Code Online (Sandbox Code Playgroud)

eum*_*iro 5

def angles(x):
    return [ i * x / 5 - x for i in xrange(11)]
Run Code Online (Sandbox Code Playgroud)

angles(90) 回报 [-90, -72, -54, -36, -18, 0, 18, 36, 54, 72, 90]

angles(45) 回报 [-45, -36, -27, -18, -9, 0, 9, 18, 27, 36, 45]

您现在可以迭代返回值,它是一个列表.

我的angles方法中有十个步骤返回十一个值.

如果您想要其他步骤:

def angles(angle, steps):
    return [ i * angle * 2 / (steps - 1) - angle for i in xrange(steps)]
Run Code Online (Sandbox Code Playgroud)

angles(90, 5) 回报 [-90, -45, 0, 45, 90]

  • @JoanVenge:`def x(...)`与`x = lambda(...)`相同.在风格上,我认为最好使用`def`定义所有函数以获得代码可读性.`lambda`的主要用途是匿名函数,如`sorted(some_list,key = lambda x:...做某事......)` (3认同)