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]