#python #django #list #list-comprehension
#питон #джанго #Список #понимание списка
Вопрос:
Я разрабатываю словарное приложение Django, в котором Definition
у Tag
есть s. Я написал эту общую функцию для сбора всех Tag
файлов из списка Definition
файлов.
Это моя текущая рабочая версия:
def get_tags(definitions):
tags = []
for d in definitions:
tags = d.tags.all()
return tags
Я пытался сделать то же самое, используя понимание списка Python:
tags = []
return [tags.extend(d.tags.all()) for d in definitions]
Однако этот код пока не работает. Что я упускаю из виду?
Есть ли еще более простой способ сделать это всего в одной строке без создания переменной tags, возможно, используя оператор yield?
Ответ №1:
вам нужно выполнить итерацию по всем элементам d.tags.all()
, и, следовательно, вам нужен вложенный список comp:
tags = [t for d in definitions for t in d.tags.all()]
это всего лишь версия для понимания списка:
tags = []
for d in definitions:
for t in d.tags.all():
tags.append(t)