Понимание списка 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] 
  • Перемещение и изменение древовидного списка структуры dict
  • Ошибка отпечатка Python:
  • Как проверить, является ли переменная конкретным классом в python?
  • Почему точка с запятой разрешена в этом фрагменте питона?
  • Медленный HTTP-сервер Python на localhost
  • PEP 3130: разница между корпусом коммутатора и блоками кода оператора
  • ".join (reverse (val)) vs val ... который является pythonic?
  • Как я могу просто изменить путь для всего пакета запросов в папке библиотек в моем проекте appengine
  • Операции чтения и записи, связанные с ComputedProperty в GAE NDB
  • Внедрение атрибутов в пространство имен модулей
  • Как сопоставить числа в диапазоне <0; 99> до диапазона <-1.0; 1.0>?
  •  
    Interesting Posts for Van-Lav

    OpenCV / Array должен быть CvMat или IplImage / Освобождение объекта захвата

    Как установить абсолютное положение окон цифр с помощью matplotlib?

    Согласованность порядка Dict / Set Parsing

    Постоянный мониторинг потока потоковой передачи TCP для данных в Python

    рекурсивная векторизация python с таймсериями

    Как вы организовываете модули Python?

    Настройка EB CLI – ошибка nonetype get_frozen_credentials

    Что является более эффективным способом передачи переменных из шаблона в View в Django?

    Запуск задания Python Celery через Redis Pub / Sub

    Подгонка всего, кроме буквы – регулярное выражение

    ValueError: нет такого метода тестирования в <class 'myapp.tests.SessionTestCase'>: runTest

    Ошибки модуля Twilio Python после компиляции

    Числовой вывод и не повторяют повторяющиеся числа для ex 1010101; 2020202, 1212121

    Преобразование данных JSON из pandas в определенную схему / формат JSON в python

    Получить информацию из подписок в главном списке элегантно

    Python - лучший язык программирования в мире.