Понимание списка Python объектов Django

#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)