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

Python Set Copy ()

Метод Python Set.copy () создает и возвращает плоскую копию этого набора. https://youtu.be/uvuhea-qxxqk Вот минимальный пример, который вы копируете набор с двумя целыми числами и строковым значением: >>> S = {1, 2, Alice ‘} >>> S.copy () {1, 2, ‘ALICE’} синтаксис давайте погрузимся в формальный синтаксис метода set.copy (). set.copy () ArgumentData Typeexplanation — … Python Set Copy () Подробнее »

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

Python’s set.copy () Метод создает и возвращает плоскую копию этого набора.

Вот минимальный пример, где вы копируете набор с двумя целыми числами и строковым значением:

>>> s = {1, 2, 'Alice'}
>>> s.copy()
{1, 2, 'Alice'}

Синтаксис

Давайте погрузимся в формальный синтаксис set.copy () метод.

set.copy()

set.copy () Метод не имеет никакого аргумента. Если вы попытаетесь пройти аргумент, Python поднимет TypeError: Copy () не принимает аргументов (1 дано) Отказ Вы можете исправить эту ошибку, не передавая аргумент в метод.

>>> {1, 2, 3}.copy({'Alice', 'Bob'})
Traceback (most recent call last):
  File "", line 1, in 
    {1, 2, 3}.copy({'Alice', 'Bob'})
TypeError: copy() takes no arguments (1 given)

Возвращаемое значение Set Copy ()

Возвращаемое значение set.copy () это новый Установить Объект, который содержит ссылку на все набор элементов в исходном наборе.

Неглубокий против Deep Set Copy ()

set.add () Операция копирования выполняет неглубокую копию набора, что означает, что каждый элемент в наборе не скопирован. Новый набор содержит те же элементы, что и оригинальный набор – это просто другой Контейнер Отказ

Это привело некоторых людей, чтобы спросить: Как выполнить глубокую копию набора?

💡 Однако Концепция глубокой копии не имеет смысла для наборов Поскольку наборы разрешено только держать неизменных объектов, которые не могут быть изменены после создания. Нет никакой практической выгоды копирования неизменного объекта, но ощутимых практических недостатков, таких как пульс памяти. Из-за Только для чтения Узоры доступа только к неизменным объектам , программа будет ведать себя точно так же при работе над копией по сравнению с работой на исходном объекте. Вот почему вы даже не должны копировать неизменные объекты, а повторно использовать их.

Следующий код показывает, что set.copy () Функция создает неглубокую копию. Как проверено с использованием «IS» ключевое слово . , скопированные заданные указывают на другое местоположение памяти, но единственный набор элемент, A кортеж , указывает на то же местоположение памяти в обоих наборах.

>>> s1 = {(1, 2, 3)}
>>> s2 = s1.copy()
>>> s1.pop() is s2.pop()
True

Что такое временная сложность Set Copy ()?

Сложность времени выполнения set.copy () Функция на наборе с n элементами – O (n) Поскольку Python создает новый пустой набор и добавляет один элемент за раз на множество. Эта процедура повторяется N раз. Каждое добавление операции – O (1) Таким образом, общая сложность времени выполнения является O (1) * O (n) который дает линейную сложность времени выполнения.

Вы можете увидеть это в следующем простом эксперименте, в котором мы запускаем метод SET несколько раз для увеличения числа заданных элементов.

Я провел этот эксперимент на моем Acer Aspire 5 ноутбук (Я знаю) с Intel Core I7 (8-й GEN) процессор и 16 ГБ памяти. Вот код эксперимента:

import matplotlib.pyplot as plt
import random
import time

sizes = [i * 10**5 for i in range(50)]
runtimes = []

for size in sizes:
    s = set(range(size))

    # Start track time ...
    t1 = time.time()
    s.copy()
    t2 = time.time()
    # ... end track time
    
    runtimes.append(t2-t1)


plt.plot(sizes, runtimes)
plt.ylabel('Runtime (s)')
plt.xlabel('Set Size')

plt.show()

Другие методы набора Python

Все Установить методы называются данными Установить Отказ Например, если вы создали набор S = {1, 2, 3} Вы бы назвали S.CLEAR () Чтобы удалить все элементы набора. Мы используем термин «Этот набор» обратиться к множеству, на котором выполняется метод.

добавлять() Добавьте элемент на этот набор
Очистить() Удалите все элементы из этого набора
Копировать () Создать и вернуть плоскую копию этого набора
разница() Создайте и верните новый набор, содержащий все элементы этого набора, кроме те, которые в данных аргументах. Полученный набор имеет максимум максимально возможным элементам, как и любой другой.
Разница_update () Удалите все элементы из этого набора, которые являются членами любого из заданных аргументов.
отказаться() Удалите элемент из этого набора, если он является членом, иначе ничего не сделайте.
Пересечение () Создайте и верните новый набор, который содержит все элементы, которые являются членами всех наборов: это также указано. Отказ
Intersection_Update () Удаляет все элементы из этого набора, которые не являются членами во всех других указанных наборах.
iSdisjoint () Верните true, если ни один элемент из этого набора не является членом любого другого указанного набора. Наборы пересекаются, если и только если их пересечение – это пустой набор.
issubset () Верните True, если все элементы этого набора являются членами указанного набора аргумента.
ОСУПЕРСЕТ () Верните true, если все элементы указанного набора аргумента являются членами этого набора.
поп () Удалить и вернуть случайный элемент из этого набора. Если набор пуст, он поднимет брелок.
Удалить() Удалите и верните определенный элемент из этого набора, как определено в аргументе. Если набор не содержит элемента, он поднимет keyError.
Symmetric_difference () Верните новый набор с элементами в этом наборе или указанном наборе аргумента, но не элементы, которые являются членами обоих.
Symmetric_difference_update () Замените этот набор с помощью симметричной разницы, то есть элементы в этом наборе или указанном наборе аргумента, но не элементы, которые являются членами обоих.
Союз () Создайте и верните новый набор со всеми элементами, которые находятся в этом наборе или в любом из указанных настроек аргументов.
Обновить() Обновите этот набор со всеми элементами, которые находятся в этом наборе, или в любом из указанных настроек аргументов. Полученный набор имеет по меньшей мере, как и любой другой элементы.

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

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

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