Python: Переверните каждые 2 элемента списка

Я работаю над платформой Django, где я должен предоставить список координат полигонов из google maps для поиска по набору данных. Пока что мне удалось собрать координаты с фронтенда, но они перепутаны, т.е. сначала идут долготы, затем широты, а в идеале сначала должны идти долготы, а затем широты

Вот рабочий образец списка, который у меня есть: coordinates = [65.56147597726766, -104.83033675930798, 64.44751706485646, -93.93189925930798, 58.232434372977615, -98.85377425930798]

Желаемый формат должен быть: coordinates = [-104.83033675930798,65.56147597726766, -93.93189925930798,64.44751706485646, -98.85377425930798,58.232434372977615]

Любая помощь будет высоко оценена.

Вы можете работать с пониманием списка, где мы используем фрагменты исходного списка:

[x for i in range(0, len(coordinates), 2) for x in reversed(coordinates[i:i+2])]

для заданных выборочных данных, получаем:

>>> coordinates = [65.56147597726766, -104.83033675930798, 64.44751706485646, -93.93189925930798, 58.232434372977615, -98.85377425930798]
>>> [x for i in range(0, len(coordinates), 2) for x in reversed(coordinates[i:i+2])]
[-104.83033675930798, 65.56147597726766, -93.93189925930798, 64.44751706485646, -98.85377425930798, 58.232434372977615]

Вы можете сделать:

coordinates = [65.56147597726766, -104.83033675930798, 64.44751706485646, -93.93189925930798, 58.232434372977615, -98.85377425930798]

res = [val for coo in zip(coordinates[1::2], coordinates[::2]) for val in coo]
print(res)

Выход

[-104.83033675930798, 65.56147597726766, -93.93189925930798, 64.44751706485646, -98.85377425930798, 58.232434372977615]

Другой способ:

coordinates = [65.56147597726766, -104.83033675930798, 64.44751706485646, -93.93189925930798, 58.232434372977615, -98.85377425930798]


result = coordinates[1:] + [0]
result[1::2] = coordinates[0::2]
Вернуться на верх