|
|
Програмування мовою Python: основи та практика Електронний посібник |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ТЕМА 7.5. МНОЖИНИ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Множини у мові Python подібні до їх математичних аналогів
та являють собою структуру даних, що містить унікальні та невпорядковані
елементи. Вони використовуються тоді, коли важлива саме наявність елементу, а
не його порядок чи частота, з якою він трапляється.
На відміну від масивів, де елементи
зберігаються у впорядкованому списку, у множинах порядок зберігання елементів
невизначений. Це дає змогу швидше перевіряти наявність елементу у множині,
оскільки не потрібно перебирати всі елементи. Множини записують як перелік
елементів, розділених комами та взяті у фігурні дужки. {1, 2, 3, ‘Hello’}.
>>>
a = set()
>>> s={} >>>
type(s) <class ‘dict’>
>>>
s1 = {1, 2, 3} >>>
s2 = {‘a’, ‘b’, ‘c’, 5}
Множину можна створити з елементів
об’єкта, який можна пройти по елементах (як-от діапазон, список, рядок,
словник, кортеж, файл тощо), використовуючи функцію set([ітерований
об’єкт]). Проте важливо зазначити, що в множину увійдуть лише
унікальні елементи.>>> a =
set(‘hello’)
Як зазначалося раніше, можна перевірити приналежність
деякого елементу до множини, використовуючи оператор in (значення in ім’я_множини).
Відповідно для
перебору всіх елементів множини (в невизначеному порядку) необхідно
скористатися циклом for:
Множини можна порівнювати між собою.
Порівняння множин зводиться до перевірки, чи є множини рівними, або чи є
певна множина підмножиною іншої.
set == other. Перевірка, чи множини set та other рівні. Повертає True, якщо всі елементи множини set належать множині other, і всі елементи множини other належать множині set, інакше – False.
set != other. Перевірка, чи є множини set та other не рівними. Повертає True, якщо принаймні один елемент множини set не належить множині other, або принаймні один елемент множини other не належить множині set, інакше – False.
set <= other. Перевірка, чи є множина set підмножиною множини other. Повертає True, якщо всі елементи множини set належать множині other, інакше – False.
set < other. Повертає True, якщо всі елементи множини set належать множині other, але не всі елементи множини other належать множині set, інакше – False.
set.isdisjoint(other). Повертає True, якщо множини set і other не мають спільних елементів, інакше – False.
set.issubset(other). Перевірка, чи є множина set підмножиною множини other. Аналогічно до set <= other. set.issuperset(other). Перевірка чи є множина other підмножиною множини set. Аналогічно до
set >= other. set.add(x). Додає елемент
x до
множини set.
set.remove(x). Вилучає елемент x із множини set. Якщо такого
елементу в множині немає, то виникає виняток KeyError. set.discard(x). Вилучає
елемент x із множини set. Якщо такого елементу в множині немає,
то нічого не відбувається. set.pop(). Вилучає
«перший» елемент з множини set та
повертає його значення як результат виконання функції.
Якщо множина порожня, то виникає
виняток KeyError. set.clear(). Очищує множину set (вилучає
всі елементи з множини).
set.union(*other) або set |....... other | Повертає
об’єднання множин set і other. Множина-результат міститиме як
елементи множини set, так і елементи множини other.
set.intersection(*other) або set
& other & .... Повертає перетин множин set і other. Множина-результат міститиме елементи, які належать як множині set, так і множині other.
set.difference(*other) або set – other – Повертає різницю множин set і other. Множина-результат міститиме
елементи множини set, які не належать множині other.
set.symmetric_difference(*other) або set ^ other. Повертає симетричну різницю множин set і other. Множина-результат міститиме елементи,
які належать множинам set та other, але не належать обом множинам. Аналогічно до (set | other)–(set & other).
Як можна бачити, вказані методи не призводять
до зміни множини, а за ними відбувається формування нової множини. Проте для
множин передбачені методи, шо призводитимуть до зміни початкової множини. set.update(*other) або set |= other. Додає до множини set всі елементи множини other. Множина set
міститиме об’єднання множин set і other. set.intersection_update(*other) або set &= other. Вилучає з
множини set всі елементи, які не
входять до множини other. Множина set міститиме перетин множин
set
і other. set.difference_update(*other) або set -= other. Вилучає з множини set всі елементи, які входять до множини other. Множина set міститиме різницю множин set і other. set.symmetric_difference_update(other) або set ^= other. Множина set міститиме симетричну різницю множин set і other.
st1=input(‘Введіть 1-й рядок’) st2=input(‘Введіть 2-й рядок’) s1=set(st1) s2=set(st2) o=s1|s2 p=s1&s2 r1=s1-s2 r2=s2-s1 print(‘Множина 1:’,s1) print(‘Множина 2:’,s2) print(«Обє’днання 1:»,o) print(‘Перетин 1:’,p) print(‘Різниця між 1-ю і 2-ю множинами:’,r1) print(‘Різниця між 2-ю і 1-ю множинами:’,r2)
# Перша
множина (множина A) A={1,2,3,4} #
Відображаємо вміст множини print(ʺМножина A:ʺ,A) # Друга множина (множина B) B={3,4,5,6} #
Відображаємо вміст множини print(ʺМножина B:ʺ,B) # Об’єднання множин (множина C) C=A|B #
Відображаємо результат print(ʺМножина C=A|B:ʺ,C) # Об’єднання
множин print(ʺМножина A.union(B):ʺ,A.union(B)) print(ʺМножина B.union(A):ʺ,B.union(A)) # Змінюємо множину A A.update(B) # Перевіряємо результат print(ʺМножина A:ʺ,A) # Змінюємо множину B B=B|{-1,-2,-3} # Перевіряємо
результат print(ʺМножина B:ʺ,B) # Змінюємо множину C C|={7,8,9} # Перевіряємо
результат print(ʺМножина C:ʺ,C) Результат виконання цього програмного коду такий: Множина A:
{1, 2, 3, 4} Множина B:
{3, 4, 5, 6} Множина
C=A|B: {1, 2, 3, 4, 5, 6} Множина A.union(B): {1, 2, 3, 4, 5, 6} Множина B.union(A): {1, 2, 3, 4, 5, 6} Множина A:
{1, 2, 3, 4, 5, 6} Множина B:
{3, 4, 5, 6, -2, -3, -1} Множина C:
{1, 2, 3, 4, 5, 6, 7, 8, 9}
# Перша
множина (множина A) A={1,2,3,4} #
Відображаємо вміст множини print(ʺМножина A:ʺ,A) # Друга множина (множина B) B={3,4,5,6} # Відображаємо вміст множини print(ʺМножина B:ʺ,B) # Перетин множин (множина C) C=A&B #
Відображаємо результат print(ʺМножина C=A&B:ʺ,C) # Перетин множин print(ʺМножина A.intersection(B):ʺ,A.intersection(B)) print(ʺМножина B.intersection(A):ʺ,B.intersection(A)) # Змінюємо множину A A.intersection_update(B) # Перевіряємо результат print(ʺМножина A:ʺ,A) # Змінюємо множину B B=B&{4,6,8,10} # Перевіряємо
результат print(ʺМножина B:ʺ,B) # Змінюємо множину C C&={1,2,3} # Перевіряємо
результат print(ʺМножина C:ʺ,C) Як результат виконання наведеного програмного коду отримуємо: Множина A:
{1, 2, 3, 4} Множина B:
{3, 4, 5, 6} Множина
C=A&B: {3, 4} Множина A.intersection(B): {3, 4} Множина B.intersection(A): {3, 4} Множина A: {3, 4} Множина B:
{4, 6}
# Перша
множина (множина A) A={1,2,3,4} #
Відображаємо вміст множини print(ʺМножина A:ʺ,A) # Друга множина (множина B) B={3,4,5,6} #
Відображаємо вміст множини print(ʺМножина B:ʺ,B) # Різниця множин (множина C) C=A-B #
Відображаємо результат print(ʺМножина C=A-B:ʺ,C) # Різниця множин print(ʺМножина A.difference(B):ʺ,A.difference(B)) print(ʺМножина B.difference(A):ʺ,B.difference(A)) # Змінюємо множину A A.difference_update(B) # Перевіряємо результат print(ʺМножина A:ʺ,A) # Змінюємо множину B B=B-{4,6,8,10} # Перевіряємо результат print(ʺМножина B:ʺ,B) # Змінюємо множину C C-={1,3,5} # Перевіряємо
результат print(ʺМножина C:ʺ,C) Результат виконання програми
Множина A:
{1, 2, 3, 4} Множина B:
{3, 4, 5, 6} Множина
C=A-B: {1, 2} Множина A.difference(B): {1, 2} Множина B.difference(A): {5, 6} Множина A: {1, 2} Множина B: {3, 5} Множина C: {2}
s=input(‘Введіть рядок:‘) a=list(s.split(‘ ‘)) a=[i.strip(‘,.!?’) for i in a if i!=‘‘]
for i in a: if len(i)==len(set(i)):
print(i) Останній цикл
можна переписати у формі генератора списку: [print(i) for i in a if len(i)==len(set(i))]
# Верхня межа n=100 # Множина
натуральних чисел E={s for s in range(1,n+1)} # Множина чисел, які у разі
ділення # на 5 дають в остачі 2 A1={s for s in E if s%5==2} # Множина чисел, які у разі
ділення # на 5 дають в остачі 4 A2={s for s in E if s%5==4} # Множина чисел, які у разі
ділення # на 5 дають
в остачі 2 або 4 A=A1|A2 # Множина
чисел, які у разі ділення # на 7 дають в остачі 3 B={s for s in E if s%7==3} # Множина чисел, які у разі
ділення # на 3 дають в остачі 1 C={s for s in E if s%3==1} # Множина чисел, які у разі
ділення на 5 дають в остачі 2 # або 4, у
разі ділення на 7 дають в остачі 3, а у разі ділення # на 3 не
дають в остачі 1 D=(A&B)-C #
Відображаємо результат print(ʺНаведені нижче числа від 1 доʺ,n) print(ʺ1)
у разі ділення на 5 дають в остачі 2 або 4;ʺ) print(ʺ2)
у разі ділення на 7 дають в остачі 3;ʺ) print(ʺ3)
у разі ділення на 3 не дають в остачі 1:ʺ) print(D) Результат
виконання програми Наведені
нижче числа від 1 до 100 1) у разі
ділення на 5 дають в остачі 2 або 4; 2) у разі
ділення на 7 дають в остачі 3; 3) у разі
ділення на 3 не дають в остачі 1: {24, 17, 59,
87}
# Верхня межа n=100 # Порожня
множина D=set() # Формується
множина чисел, які у разі ділення # на 5 дають
в остачі 2 або 4, у разі ділення на 7 # дають в
остачі 3, а у разі ділення на 3 не дають # в остачі 1 for s in range(1,n+1): if s%5==2 or
s%5==4: if s%7==3: if s%3!=1: D.add(s) # Відображаємо результат print(ʺНаведені нижче числа від 1 доʺ,n) print(ʺ1)
у разі ділення на 5 дають в остачі 2 або 4;ʺ) print(ʺ2)
у разі ділення на 7 дають в остачі 3;ʺ) print(ʺ3)
у разі ділення на 3 не дають в остачі 1:ʺ) print(D) Результат
виконання програми Наведені
нижче числа від 1 до 100 1) у разі
ділення на 5 дають в остачі 2 або 4; 2) у разі
ділення на 7 дають в остачі 3; 3) у разі
ділення на 3 не дають в остачі 1: {24, 17, 59,
87} Завдання для самоперевірки
Ø Створюють
множину за допомогою функції set() (як аргумент передається список із елементами
множини) або через перерахування елементів у фігурних дужках. Ø Для перевірки
того, чи входить елемент у множину, використовують оператор in. Ø Кількість елементів
у множині визначають за допомогою функції len(). Ø Для створення
копії множини використовують метод copy(). Ø Для додавання
елементу в множину використовують метод add(), для видалення ‒ метод remove(). Для додавання в множину елементів іншої
множини використовують метод update(). Ø Об’єднання множин ‒ множина,
елементи якої складаються з елементів об’єднуваних множин. Для об’єднання
множин використовують метод union() або оператор |. Ø Перетин множин ‒ множина,
елементи якої складаються з елементів, спільних для обох множин. Для
обчислення перетину множин використовують метод intersection() або оператор &. Ø Різниця множин ‒ множина, елементи
якої складаються з елементів першої множини за винятком тих елементів, які
входять у другу множину. Для обчислення різниці множин використовують метод difference() або оператор ^ Ø Симетрична різниця множин ‒ множина, елементи якої складаються з елементів першої
і другої множин за винятком тих елементів, які входять в обидві множини
водночас. Для обчислення симетричної різниці множин використовують метод symmetric_difference() або
оператор ^.
Ø Для
порівняння множин використовують оператори == (рівність множин), <
(перша множина є підмножиною другої множини), <= (перша множина є
підмножиною другої множини або множини рівні), > (друга множина є
підмножиною першої множини), >= (друга множина є підмножиною першої
множини або множини рівні). Ø Генератор
множини подібний до генератора списку, але вся конструкція береться у фігурні
дужки. Ø Кількість
літер у текстовому рядку можна визначити за допомогою функції len(). Ø Є значна
кількість методів, які дають змогу виконувати найрізноманітніші операції з
текстовими значеннями, як-от: перетворення реєстру символів, пошук символів і
підрядків, заміна текстових фрагментів, розбивка рядків на підрядки,
перевірка вмісту текстового рядка, форматування текстового рядка для
виведення в консоль і багато іншого.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||