Понимание списка Python: список подпунктов без дубликатов

Я пытаюсь напечатать все буквы во всех словах в списке без дубликатов.

wordlist = ['cat','dog','rabbit'] letterlist = [] [[letterlist.append(x) for x in y] for y in wordlist] 

Приведенный выше код генерирует ['c', 'a', 't', 'd', 'o', 'g', 'r', 'a', 'b', 'b', 'i', 't'] , в то время как я ищу ['c', 'a', 't', 'd', 'o', 'g', 'r', 'b', 'i'] .

Как изменить понимание списка, чтобы удалить дубликаты?

6 Solutions collect form web for “Понимание списка Python: список подпунктов без дубликатов”

Если вы хотите отредактировать собственный код:

 [[letterlist.append(x) for x in y if x not in letterlist] for y in wordlist] 

или

 list(set([[letterlist.append(x) for x in y if x not in letterlist] for y in wordlist])) 

еще:

 list(set(''.join(wordlist))) 

Вы заботитесь о поддержании порядка?

 >>> wordlist = ['cat','dog','rabbit'] >>> set(''.join(wordlist)) {'o', 'i', 'g', 'd', 'c', 'b', 'a', 't', 'r'} 

Два подхода:

Порядок сохранения:

 >>> from itertools import chain >>> from collections import OrderedDict >>> list(OrderedDict.fromkeys(chain.from_iterable(wordlist))) ['c', 'a', 't', 'd', 'o', 'g', 'r', 'b', 'i'] 

Если вы не суетитесь о порядке:

 >>> list(set().union(*wordlist)) ['a', 'c', 'b', 'd', 'g', 'i', 'o', 'r', 't'] 

Ни один из них не использует list-comps для побочных эффектов, например:

 [[letterlist.append(x) for x in y] for y in wordlist] 

letterlist ли список списков Nones исключительно для изменения letterlist

Хотя все остальные ответы не поддерживают порядок, этот код делает:

 from collections import OrderedDict letterlist = list(OrderedDict.fromkeys(letterlist)) 

См. Также статью о нескольких путях с бенчмарками: Самый быстрый способ унифицировать список в Python .

Вы можете использовать set для удаления дубликатов, но порядок не поддерживается.

 >>> letterlist = list({x for y in wordlist for x in y}) >>> letterlist ['a', 'c', 'b', 'd', 'g', 'i', 'o', 'r', 't'] >>> 
 wordlist = ['cat','dog','rabbit'] s = set() [[s.add(x) for x in y] for y in wordlist] 
  • Передача данных между страницами в функции redirect () в Google App Engine
  • Учетные данные по умолчанию для App Engine перестали работать на локальном сервере dev
  • Метаклассы и __slots__?
  • Новое для python (и программирования) нуждается в советах по организации вещей по диагонали
  • Можно ли получить доступ к ключевому имени объекта изнутри шаблона jinja2?
  • Как создать фиксацию и нажать на репо с GitHub API v3?
  • Вывод на ту же строку, что и перезапись предыдущей
  • передача параметров в функцию обработчика apscheduler
  • Python - лучший язык программирования в мире.