Как создать переменную, которая состоит из нескольких кортежей, не будучи кортежем из кортежей? - PullRequest
0 голосов
/ 04 мая 2020

Я пишу код, который должен дать последовательность Манделя для двух координат 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))]

I Я не уверен, как интегрировать переменную Point, определенную в верхней части, чтобы сделать вывод правильным. Я не могу изменить то, что возвращается. Это должно быть [result_seq]

Ответы [ 2 ]

0 голосов
/ 04 мая 2020

В вашем выражении return вместо возврата [result_seq] return list(result_seq)

, когда вы используете [], вы вставляете в список свой результат, если вы используете list (), вы конвертируете добавьте в список, и это, вероятно, то, чего вы хотите достичь, когда говорите, что хотите этот формат [(), (), (), ()] вместо [((), (), ())]

0 голосов
/ 04 мая 2020
return list(result_seq)

Он преобразует ваш кортеж в список, а не помещает его в список как единственный элемент. Кстати, почему вы вообще преобразуете свой список в кортеж: result_seq = tuple(lst) ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...