我最近一直在玩列表推导,但我已经到了一个我感到困惑的地步。目前我有这个:
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个点的列表,然后我可以用它来计算近似圆的多边形的路径长度。
由于
答案 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)
。