Модуль 8.8 (Генераторы множеств и frozenset) курса «Поколение Python: курс для продвинутых» курс расскажет о:
- Генераторы множеств
- Неизменяемые множества
frozenset
Публикуем решения на урок 8.8 Генераторы множеств и frozenset.
Как записывается генератор множества?
{выражение for переменная in последовательность}
Используя генератор множеств, дополните приведенный код, так чтобы получить множество, содержащее уникальные значения списка
Примечание 1. Обратите внимание, некоторые элементы списка – числа, а некоторые – строки, при этом строки необходимо трактовать как числа.items
. Результат вывести на одной строке, в упорядоченном виде, разделяя элементы одним символом пробела.
Примечание 2. Чтобы вывести элементы множества в упорядоченном виде используйте следующий код:
items = [10, '30', 30, 10, '56', 34, '12', 90, 89, 34, 45, '67', 12, 10, 90, 23, '45', 56, '56', 1, 5, '6', 5]
myset = {int(c) for c in items}
print(*sorted(myset))
Используя генератор множеств, дополните приведенный код, так чтобы получить множество, содержащее первую букву каждого слова (в нижнем регистре) списка
words
. Результат вывести на одной строке в алфавитном порядке, разделяя элементы одним символом пробела.
words = ['Plum', 'Grapefruit', 'apple', 'orange', 'pomegranate', 'Cranberry', 'lime', 'Lemon', 'grapes', 'persimmon', 'tangerine', 'Watermelon', 'currant', 'Almond']
myset = {i[0].lower() for i in words}
print(*sorted(myset))
Используя генератор множеств, дополните приведенный код, так чтобы получить множество, содержащее уникальные слова (в нижнем регистре) строки
Примечание. Учтите, что знаки пунктуации не относятся к словам.sentence
. Результат вывести на одной строке в алфавитном порядке, разделяя элементы одним символом пробела.
import re
sentence = '''My very photogenic mother died in a freak accident (picnic, lightning) when I was three, and, save for a pocket of warmth in the darkest past, nothing of her subsists within the hollows and dells of memory, over which, if you can still stand my style (I am writing under observation), the sun of my infancy had set: surely, you all know those redolent remnants of day suspended, with the midges, about some hedge in bloom or suddenly entered and traversed by the rambler, at the bottom of a hill, in the summer dusk; a furry warmth, golden midges.'''
stroka = re.sub(r"[-()\"#/@;:<>{}`+=~|.!?,]", "", sentence)
spisok = stroka.lower().split()
myset = set(spisok)
print(*sorted(myset))
Используя генератор множеств, дополните приведенный код, так чтобы получить множество, содержащее уникальные слова строки
Примечание. Учтите, что знаки пунктуации не относятся к словам.sentence
длиною меньше 4 символов. Результат вывести на одной строке (в нижнем регистре) в алфавитном порядке, разделяя элементы одним символом пробела.
import re
sentence = '''My very photogenic mother died in a freak accident (picnic, lightning) when I was three, and, save for a pocket of warmth in the darkest past, nothing of her subsists within the hollows and dells of memory, over which, if you can still stand my style (I am writing under observation), the sun of my infancy had set: surely, you all know those redolent remnants of day suspended, with the midges, about some hedge in bloom or suddenly entered and traversed by the rambler, at the bottom of a hill, in the summer dusk; a furry warmth, golden midges.'''
stroka = re.sub(r"[-()\"#/@;:<>{}`+=~|.!?,]", "", sentence)
spisok = stroka.lower().split()
myset = {i for i in spisok if len(i) < 4}
print(*sorted(myset))
Используя генератор множеств, дополните приведенный код, так чтобы он выбрал из списка
Примечание. Если бы списокfiles
уникальные имена файлов c расширением.png
, независимо от регистра имен и расширений. Имена файлов вывести вместе с расширением, все на одной строке, в нижнем регистре, в алфавитном порядке через пробел.files
содержал следующие имена файлов:
files = ['python.png', 'qwerty.py', 'stepik.png', 'beegeek.org', 'windows.pnp', 'pen.txt', 'phone.py', 'book.txT', 'board.pNg', 'keyBoard.jpg', 'Python.PNg', 'apple.jpeg', 'png.png', 'input.tXt', 'split.pop', 'solution.Py', 'stepik.org', 'kotlin.ko', 'github.git']
result = {c.lower() for c in files if c.lower().endswith('.png')}
print(*sorted(result))
Может ли обычное множество (тип
set
) быть элементом другого множества?
нет
Может ли замороженное множество (тип
frozenset
) быть элементом другого множества?
да
Можно ли сравнивать обычное множество (тип
set
) и замороженное множество (типfrozenset
)?
да
Что выведет следующий код:
set1 = {1, 2, 3, 4, 5}
set2 = frozenset(range(1, 6))print(set1 == set2)
True
Выберите методы, отсутствующие у замороженных множеств (тип
frozenset
).
add()
symmetric_difference_update()
discard()
difference_update()
update()
pop()
clear()
remove()
intersection_update()
Какие элементы будут храниться в замороженном множестве
set3
в результате выполнения следующего программного кода?set1 = frozenset(‘beegeek’)
set2 = frozenset(‘stepik’)set3 = set1 | set2
k
p
b
e
g
i
s
t
Какие элементы будут храниться в замороженном множестве
set3
в результате выполнения следующего программного кода?set1 = frozenset(‘beegeek’)
set2 = frozenset(‘stepik’)set3 = set1 & set2
e
k
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы