#python #list #tuples
Вопрос:
В настоящее время у меня есть список координат строкового кортежа: широта и долгота. Я хочу разделить этот список координат кортежа на список широты и список долготы. Как мне этого добиться? Я попытался использовать функцию zip, но это не работает. Мой текущий код приведен ниже.
latlon_ = [x[0] for x in latlon]
latlon_
Это возвращает:
['(39.36356356, -76.53434457)',
'(39.27426334, -76.54542274)',
'(39.36461879, -76.56234642)',
'(39.26932875, -76.60509948)',
'(39.30447891, -76.61359834)',
'(39.30411637, -76.61357519)',
'(39.33636159, -76.6802207)',]
И я хотел бы иметь 2 списка: долгота и широта.
Комментарии:
1. Можете ли вы поделиться оригинальным списком?
2.[(‘(39.36356356, -76.53434457)’,), (‘(39.27426334, -76.54542274)’,), (‘(39.36461879, -76.56234642)’,), ]
Ответ №1:
source_list=['(39.36356356, -76.53434457)',
'(39.27426334, -76.54542274)',
'(39.36461879, -76.56234642)',
'(39.26932875, -76.60509948)',
'(39.30447891, -76.61359834)',
'(39.30411637, -76.61357519)',
'(39.33636159, -76.6802207)',]
latitude=[x.split(',')[0][1:] for x in source_list]
longitude=[x.split(',')[1][2:].replace(')','') for x in source_list]
print('latitude: ', latitude)
print('longitude:', longitude)
Выход:
latitude: ['39.36356356', '39.27426334', '39.36461879', '39.26932875', '39.30447891', '39.30411637', '39.33636159']
longitude: ['76.53434457', '76.54542274', '76.56234642', '76.60509948', '76.61359834', '76.61357519', '76.6802207']
Ответ №2:
Я бы сначала применил регулярное выражение, подобное этому:
import re
pattern = re.compile("d [.]d ")
latlon_ = [re.findall(pattern, tpl) for tpl in latlon_]
Затем у вас есть latlon_
формат, с которым вы можете работать, и применить еще два понимания списка для извлечения долготы и широты в виде поплавков:
long = [float(tpl[0]) for tpl in latlon_]
lat = [float(tpl[1]) for tpl in latlon_]
Комментарии:
1. С помощью некоторых настроек вы можете понять только один список.
aa = [] bb = [] latlon_ = [re.findall(pattern, tpl) for tpl in list_] [(aa.append(ll), bb.append(lt)) for ll, lt in latlon_] print(aa, bb)
Ответ №3:
latlon = [('(39.36356356, -76.53434457)',), ('(39.27426334, -76.54542274)',), ('(39.36461879, -76.56234642)',), ]
lat,lon = list(zip(*[eval(x[0]) for x in latlon]))
print(f'lat = {list(lat)}nlon = {list(lon)}')
С принтами:
lat = [39.36356356, 39.27426334, 39.36461879]
lon = [-76.53434457, -76.54542274, -76.56234642]