#python #list
Вопрос:
Я хочу заполнить список в соответствии с другим списком с оценками. Я нашел способ, но мне было интересно, можно ли это сделать и с пониманием списка.
У меня есть список mood_options
со строками и список weekly_scores
с целыми числами. Я использую целые числа из в weekly_scores
качестве индекса для выбора из mood_options
списка. Затем эти выбранные элементы mood_options
помещаются в вызываемый список weekly_moods
.
Вот как я добился этого с помощью цикла for:
mood_options = ["awful", "bad", "meh", "good", "amazing"]
weekly_scores = [2, 4, 1, 3, 4, 2, 4]
weekly_moods = []
for score in weekly_scores:
weekly_moods.append(mood_options[score-1])
Как я уже сказал, это работает, но у меня такое чувство, что это может быть более кратким, используя понимание списка, однако я не могу понять, как это сделать.
Ответ №1:
Использование:
weekly_moods = [mood_options[score-1] for score in weekly_scores]
Полный код
mood_options = ["awful", "bad", "meh", "good", "amazing"]
weekly_scores = [2, 4, 1, 3, 4, 2, 4]
weekly_moods = [mood_options[score - 1] for score in weekly_scores]
print(weekly_moods)
Вывод
['bad', 'good', 'awful', 'meh', 'good', 'bad', 'good']
Список литературы
Комментарии:
1. Обратите
score-1
внимание, что предполагается, что настроения проиндексированы на 1. Они также могут быть проиндексированы с индексом 0, и в этом случае просто используйтеscore
.2. Спасибо за ответ!
Ответ №2:
Он может быть написан с пониманием списка:
[mood_options[i-1] for i in weekly_scores]
Это берет i из weekly_scores
и использует его для извлечения правильного элемента mood_options
Комментарии:
1. Спасибо за ваш ответ