Понимание списка

#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. Спасибо за ваш ответ