Как изменить список в Python? - PullRequest
3 голосов
/ 09 мая 2019

Можете ли вы помочь мне изменить мой список? У меня есть список, который состоит из трех координат 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"

Как это можно сделать? Спасибо заранее за вашу помощь.

Ответы [ 4 ]

1 голос
/ 22 мая 2019

Вы можете использовать:

xy = '\n'.join([','.join(coord.split(' ')[0:2]) for coord in xyz])

Эта функция перебирает каждую координату XYZ, разделяет их по пробелам, соединяет первые две координаты запятой и создает список.Затем он присоединяется к списку с помощью новых строк, создавая желаемый результат.

1 голос
/ 09 мая 2019

Вот мое решение, используйте 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)]
1 голос
/ 09 мая 2019

Вот еще один ответ, который берет ваш входной список и использует словарь, чтобы извлечь широту и долготу.Затем код перебирает два словаря и получает значения широты и долготы.

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
1 голос
/ 09 мая 2019

Добавьте первые два элемента в каждом подсписке к новым 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...