Можете ли вы помочь мне изменить мой список? У меня есть список, состоящий из трех координат X Y Z. Мне нужно создать строку с координатами X Y, разделенными запятой, и каждой координатой, разделенной новой строкой.
xyz = ['55.548745 35.547852 5.545', '57.85425 37.524852 7.545', '57.214445 38.587852 6.745']
Результат должен выглядеть так:
xy = "55.548745,35.547852
57.854258,37.524852
57.214445,38.587852"
Как это может быть сделано? Спасибо заранее за вашу помощь.
@DaichiJameson Я хотел бы получить вывод в виде списка строк. Чтобы каждая новая группа координат x y находилась в новой строке. Спасибо





Добавьте первые два элемента в каждом подсписке в новые списки x,y:
xyz = ['55.548745 35.547852 5.545', '57.85425 37.524852 7.545', '57.214445 38.587852 6.745']
x = []
y = []
for p in xyz:
x1, y1 = p.split()[:-1]
x.append(float(x1))
y.append(float(y1))
print(x)
print(y)
выход:
[55.548745, 57.85425, 57.214445]
[35.547852, 37.524852, 38.587852]
Теперь у вас есть два списка в том же порядке, что и исходный список, поэтому можно ссылаться на соответствующие (x,y) точки:
print(x[0], y[0])
возвращает кортеж первой координаты:
(55.548745, 35.547852)
Вот мое решение: используйте split()[:-1], чтобы удалить z, а затем верните список tuple из x и y
xyz = ['55.548745 35.547852 5.545', '57.85425 37.524852 7.545', '57.214445 38.587852 6.745']
new_list = [(float(x2), float(y2)) for (x2, y2) in [x1.split()[:-1] for x1 in xyz]]
print(new_list)
Выход:
[(55.548745, 35.547852), (57.85425, 37.524852), (57.214445, 38.587852)]
Вот еще один ответ, который берет ваш список ввода и использует понимание словаря для извлечения широты и долготы. Затем код перебирает два словаря и получает значения широты и долготы.
xyz = ['55.548745 35.547852 5.545', '57.85425 37.524852 7.545', '57.214445 38.587852 6.745']
geo_latitude = {y:x.split()[0] for y,x in enumerate(xyz)}
geo_longitude = {y:x.split()[1] for y,x in enumerate(xyz)}
for (latitude_key,latitude_value),(longitude_key,longitude_value) in zip(geo_latitude.items(), geo_longitude.items()):
# I'm using f-strings to format and print the strings
print(f'Lat/Long Coordinates -- {latitude_value}, {longitude_value}')
# outputs
Lat/Long Coordinates -- 55.548745, 35.547852
Lat/Long Coordinates -- 57.85425, 37.524852
Lat/Long Coordinates -- 57.214445, 38.587852
Вы можете использовать:
xy = '\n'.join([','.join(coord.split(' ')[0:2]) for coord in xyz])
Это повторяет каждую координату xyz, разделяет их по пробелу, объединяет первые две координаты запятой и создает список. Затем он присоединяется к списку с помощью новой строки, создавая желаемый результат.
Результат кажется мне немного двусмысленным, вы хотите, чтобы на выходе был список строк с координатами, разделенными запятыми в каждой строке, или вы хотите, чтобы результатом был список кортежей с числами с плавающей запятой?