我正在编写应给出两个坐标x和y的曼德尔序列的代码
Point = Tuple[float, float]
def mandel_seq(x: float, y: float, n: int = 100) -> Sequence[Point]:
(u_0, v_0) = (0.0, 0.0)
(u_n,v_n) = (x+u_0**2-v_0**2,y + 2*u_0*v_0)
bound = 0
smallest_reached=False
result_seq = (u_0,v_0) + (u_n, v_n)
lst = []
while smallest_reached==False and bound < n:
(u_n, v_n) = (x + u_n ** 2 - v_n ** 2, y + 2 * u_n * v_n)
bound = bound + 1
result_seq = result_seq + (u_n,v_n)
if u_n**2 + v_n**2 > 4:
smallest_reached = True
for i in range(0, 8, 2):
lst.append((result_seq[i:i + 2]))
result_seq = tuple(lst)
return [result_seq]
mandel_seq(1,0)应该给出:[[(0.0,0.0),(1.0,0.0),(2.0,0.0),(5.0,0.0)]但给出[[((0.0,0.0),(1.0,0.0) ),(2.0,0.0),(5.0,0.0))]
我不确定如何整合在顶部定义的Point变量以使输出正确。我无法更改返回的内容。它必须是[result_seq]
return list(result_seq)
它将把您的元组转换成一个列表,而不是将它作为唯一的项目包含在列表中。顺便说一句,为什么您将列表全部转换为元组:result_seq = tuple(lst)
??
在您的return语句中,而不是返回[result_seq]
而不是返回List(result_seq)
[在使用[]时,您将结果插入到列表中,如果使用List(),则将元组转换为列表,而当您说想要这种格式时,这可能就是要实现的目标[[ ),(),(),()]代替[[((),(),())]