双重列表理解

时间:2014-09-25 10:26:51

标签: python list list-comprehension

我最近一直在玩列表推导,但我已经到了一个我感到困惑的地步。目前我有这个:

k = range(2,11)
N = [2**k[u] for u in range(9)]
i = [range(N[v] + 1) for v in range(9)]

xCoord = [0.5*math.cos((2*(math.pi)*i[n][j])/N[n]) for n in range(9) for j in range(len(i[n])]

这给了我一个常规列表而不是嵌套列表,这就是我想要的。我想要一个嵌套列表,每个值都有一个列表。

为了澄清,如果我的N = 4,我想生成一个列表,其中包含对应于i = 0,1,2,3,4的点的x坐标。对于N = 8,i = 0 ,1,2,3,4,5,6,7,8等。

我要做的是沿半径为1/2的圆形制作N + 1个点的列表,然后我可以用它来计算近似圆的多边形的路径长度。

由于

1 个答案:

答案 0 :(得分:0)

对于嵌套列表,请写

xCoord = [[0.5*math.cos((2*(math.pi)*i[n][j])/N[n]) for j in range(len(i[n])] for n in range(9)]

注意添加的[]。我也颠倒了顺序,因为j的范围取决于n:在内部理解中,n是一个常数(由外部理解设定)。

如果您只想近似圆周长的值,则有更有效的方法:首先,您不必存储所有列表,只需存储“当前”列表来计算长度。你甚至不需要一个列表,因为有一个公式可以获得长度:对于n点和半径R,圆圈中刻出的正多边形的圆周就是简单的(在Python中)语法):2*n*R*math.sin(math.pi/n)