1), если у вас есть список: Здесь у вас есть несколько вариантов: >>>
def f7(seq):
seen = set()
seen_add = seen.add
return [x for x in seq if not (x in seen or seen_add(x))]
Почему правопреемником seen.add в seen_add вместо того, чтобы просто призывающих seen.add? Python - динамический язык, и разрешая see.add, каждая итерация более дорогостоящая, чем разрешение локальной переменной. seen.add может быть изменен между итерациями, а среда выполнения недостаточно умна, чтобы это исключить. Чтобы играть в это безопасно, он должен каждый раз проверять объект.
2) Если у вас есть QuerySet: Для более объяснить, читать эту >>>
Примечание
При указании имен полей, вы должны предоставить order_by() в QuerySet и поля в order_by() должен начинаться с полей в distinct(), в том же порядке.
Например, SELECT DISTINCT ON (a) дает вам первую строку для каждого значения в столбце a. Если вы не укажете заказ, вы получите произвольную строку.
пример:
>>> Author.objects.distinct()
>>> Entry.objects.order_by('pub_date').distinct('pub_date')
, когда вы говорите, что у вас есть list list list list? если да, скажи мне и ответь! – rakwen
Посмотрите мой ответ! – rakwen
Взгляните на мой ответ! Я отредактировал его! – rakwen