Как я могу назначить переменную names_and_ranks списку, где каждый элемент равен названию города и соответствующему рангу? - PullRequest
2 голосов
/ 05 апреля 2019
city_indices = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

city_names = ['Buenos Aires',
 'Toronto',
 'Pyeongchang',
 'Marakesh',
 'Albuquerque',
 'Los Cabos',
 'Greenville',
 'Archipelago Sea',
 'Walla Walla Valley',
 'Salina Island',
 'Solta',
 'Iguazu Falls']

Имея данные (city_indices и city_names), я хочу присвоить переменной names_and_ranks список, каждый элемент которого равен названию города и соответствующему рангу.Например, первый элемент будет «1. Буэнос-Айрес», а второй - «2. Торонто» с использованием цикла for и списков (city_indices и city_names).

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

for city_indices in list(range(0, len(city_names))):
print(city_indices+1, city_names[city_indices])

Например, я хочу, чтобы names_and_ranks должен возвращать значение, как показано ниже

names_and_ranks = []

names_and_ranks[0] # '1. Buenos Aires'
names_and_ranks[1] # '2. Toronto'
names_and_ranks[-1] # '12. Iguazu Falls'

В настоящее время я изучаю Python изастрял в этом шаге на 5 часов .. Любой совет поможет!

Спасибо!

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

Должно быть несколько способов, включая понимание списка с форматированием строки :

names_and_ranks = ["%s. %s" % (i+1, name) for i, name in zip(city_indices, city_names)]

Или используйте enumerate вместо zip, если city_names уже в заказе:

names_and_rank = ["%s. %s" % (i, name) for i, name in enumerate(city_names, 1)]

Оба вывода одинаковы:

['1. Buenos Aires',
 '2. Toronto',
 '3. Pyeongchang',
 '4. Marakesh',
 '5. Albuquerque',
 '6. Los Cabos',
 '7. Greenville',
 '8. Archipelago Sea',
 '9. Walla Walla Valley',
 '10. Salina Island',
 '11. Solta',
 '12. Iguazu Falls']
0 голосов
/ 05 апреля 2019

Использование zip и понимание списка :

combined = ['{0}. {1}'.format(x[0], x[1]) for x in zip(city_indices, city_names)]

Вывод:

>>> combined = ['{0}. {1}'.format(x[0], x[1]) for x in zip(city_indices, city_names)]
>>> print(combined)
['0. Buenos Aires', '1. Toronto', '2. Pyeongchang', '3. Marakesh', '4. Albuquerque', '5. Los Cabos', '6. Greenville', '7. Archipelago Sea', '8. Walla Walla Valley', '9. Salina Island', '10. Solta', '11. Iguazu Falls']
>>>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...