Рубрики
Без рубрики

Список Python для установки преобразования [интерактивное руководство]

У вас есть список, но вы хотите преобразовать его в набор Python? Без проблем! Используйте конструктор SET (…) и пропустите объект списка как аргумент. Например, если у вас есть список друзей строк, вы можете преобразовать его в комплект, используя набор вызовов (друзей). https://youtu.be/qywpwgncqkw Вот пример кода … Python List для установки преобразования [Interactive Guide] Подробнее »

Автор оригинала: Chris.

У вас есть список, но вы хотите преобразовать его в набор Python? Без проблем! Использовать набор(…) Конструктор и пропустите объект списка как аргумент. Например, если у вас есть список строк друзья , вы можете преобразовать его в комплект, используя вызов Установить (друзья) .

Вот пример фрагмента кода:

friends = ['Alice', 'Bob', 'Ann', 'Liz']
s = set(friends)
print(s)
# {'Ann', 'Alice', 'Bob', 'Liz'}

Попробуйте сами в нашей интерактивной Python Shell:

Упражнение : Добавьте другую строку «Алиса» к списку друзья и увидеть полученный набор. Сколько элементов делают список и набор?

Список Python для установки сложности времени

Сложность времени преобразования Список к Установить линейный в количестве элементов списка. Итак, если набор имеет N Элементы, асимптотическая сложность – O (n) Отказ Причина в том, что вам нужно Итайте через каждый элемент В списке, который является O (n) и добавьте этот элемент на набор, который является O (1) Отказ Вместе сложность – это O (n) * (n * (n) .

Вот реализация псевдокода Список для установки Метод преобразования:

def list_to_set(l):
    s = set()

    # Repeat n times --> O(n)
    for x in l:

        # Add element to set --> O(1)
        s.add(x)
        
    return s

friends = ['Alice', 'Bob', 'Ann', 'Liz', 'Alice']
s = list_to_set(friends)
print(s)
# {'Ann', 'Alice', 'Bob', 'Liz'}

Нужно помочь понять этот фрагмент кода? Попробуйте визуализацию его в вашем браузере – просто нажмите «Далее», чтобы увидеть, какой код в памяти:

Список Python для установки Удалить дубликаты

Установленная структура данных является одной из основных типов данных сбора в Python и Многие другие языки программирования Отказ

Набор является неупорядоченной коллекцией уникальных элементов. (Подробнее о I Ultimate Guide к набору Python )

  • Коллекция : Набор – это набор элементов, таких как список или кортеж Отказ Сборник состоит из примитивных элементов (например, целых чисел, поплавков, струн) или сложных элементов (например объекты , кортежи). Однако в установленном наборе все элементы данных должны быть усажены, потому что он сильно опирается на хеш-функцию для реализации спецификации.
  • Неупорядоченные : В отличие от списков, наборы неупорядочены, потому что нет фиксированного порядка элементов. Другими словами, независимо от того, на который вы положите вещи в набор, вы никогда не можете быть уверены, в каком порядке набор хранит эти элементы.
  • Уникальный : Все элементы в комплекте уникальны. Каждая пара значений (х, у) В наборе создается другая пара хеш-значений (хэш (х)! = хеш (Y)) Отказ Следовательно, каждая пара элементов х и y В наборе разные.

Таким образом, вы можете Удалить все дубликаты из списка х Преобразовав его в набор и обратно в список, используя команду Список (SET (X)) Отказ Однако информация о упорядочении может быть потеряна в процессе (в виде набора, по определению, неупорядоченным).

friends = ['Alice', 'Bob', 'Ann', 'Liz', 'Alice', 'Bob']
print(friends)
# ['Alice', 'Bob', 'Ann', 'Liz', 'Alice', 'Bob']

dup_free = list(set(friends))
print(dup_free)
# ['Bob', 'Alice', 'Liz', 'Ann']

Таким образом, результирующий список не имеет дубликатов – но он также потерял порядок элементов: строки «Лиз» и «Энн» переключил свой заказ после преобразования. Это может отличаться на вашем компьютере!

Список Python Чтобы установить в список: список (SET (X))

Преобразуя список х на набор и обратно в список с вложенные Экспрессия конструктора Список (SET (X)) Вы достигаете двух вещей:

  • Вы удалите все дубликаты из оригинального списка х Отказ
  • Вы теряете всю информацию заказа. Полученный список может (или не может) иметь полное новое упорядочение оставшихся элементов.

Нет выхода: Установленная структура данных более эффективна, чем структура данных списка только потому, что она менее мощна.

Это похоже на сжатие изображения: путем удаления информации от исходного изображения, новое изображение нужно меньше ресурсов на вашем компьютере за счет более низкого качества. Если вы преобразуете сжатый сжатый сжатый (или набор в этом отношении) обратно в исходную структуру данных, она больше не выглядит так же.

Это подчеркивает важное компромисс в программировании: Всегда выбирайте правильную структуру данных для конкретной проблемы под рукой.

Список Python для установки заповедника

Но что, если вы хотите сохранить заказ при преобразовании списка на набор (и, может быть, обратно)? (Вы бы сделали это только для удаления дубликатов).

Я написал подробную статью по этой теме, поэтому проверьте его, если вам нужна дополнительная информация.

Эффективный метод: Более короткий и более лаконичный способ – создать Словарь Из элементов в списке, чтобы удалить все дубликаты и преобразовать словарь обратно в список. Это сохраняет порядок исходных элементов списка.

lst = ['Alice', 'Bob', 'Bob', 1, 1, 1, 2, 3, 3]
print(list(dict.fromkeys(lst)))
# ['Alice', 'Bob', 1, 2, 3]
  1. Преобразуйте список в словарь с Dict.Fromkeys (LST) Отказ
  2. Преобразуйте словарь в список Список (Dict) Отказ

Каждый элемент списка становится новым ключ к словарю Отказ Например, список [1, 2, 3] становится словарь {1: нет, 2: нет, 3: нет} Отказ Все элементы, которые происходят несколько раз, будут присвоены к тому же ключу. Таким образом, словарь содержит только уникальные ключевые ключи – не могут быть несколько равных клавиш.

В качестве значений словаря вы принимаете фиктивные значения (по умолчанию).

Затем вы преобразуете словарь обратно в список, выбрасывающие фиктивные значения.

Вот код:

>>> lst = [1, 1, 1, 3, 2, 5, 5, 2]
>>> dic = dict.fromkeys(lst)
>>> dic
{1: None, 3: None, 2: None, 5: None}
>>> duplicate_free = list(dic)
>>> duplicate_free
[1, 3, 2, 5]

Таким образом, вы можете просто использовать заказанный тип данных словаря.

Связанные статьи в блоге:

  • Python Удалить дубликаты из списка списков
  • Список Python Удалить
  • Окончательный гид по словари Python!

Список Python Чтобы установить ошибку: несчастье

Распространенная ошибка – попытаться преобразовать установленную в список с нестабильными типами данных. Вот что произойдет, если вы попытаетесь преобразовать список списков в набор:

users = [['Alice', 23, 'female'],
         ['Bob', 26, 'male'],
         ['Ann', 31, 'female']]

s = set(users)
print(s)

Результатом является сообщение об ошибке Несчастный тип: «Список» Отказ

'''
Traceback (most recent call last):
  File "C:\Users\xcent\Desktop\code.py", line 6, in 
    s = set(users)
TypeError: unhashable type: 'list'
'''

Почему перечислены в списках?

Поскольку они изменяются: вы можете изменить список, добавив или удаляя элементы. Если вы измените тип данных списка, изменяется значение HASH (вычисляется на основе содержания списка). Это напрямую нарушает определение, что A «Хаш-ценность […] Никогда не меняется в течение своей жизни» ( Смотрите здесь ).

Ключ на вынос: Соребимые типы данных не являются одновременными. Поэтому вы не можете использовать их в наборах.

Итак, как это решить? Просто преобразуйте внутренние списки в неизменяемый тип коллекции, такого как кортеж:

users = [('Alice', 23, 'female'),
         ('Bob', 26, 'male'),
         ('Ann', 31, 'female')]

s = set(users)
print(s)
# {('Bob', 26, 'male'),
#  ('Ann', 31, 'female'),
#  ('Alice', 23, 'female')}

Теперь результат представляет собой набор элементов кортежей. Поскольку кортежи неизменяются, значение хеша никогда не изменится, и вы можете создать из них из них.

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.