Решение модуля 8.8 Поколение Python: для продвинутых

Модуль 8.8 (Генераторы множеств и frozenset) курса «Поколение Python: курс для продвинутых» курс расскажет о:

  • Генераторы множеств
  • Неизменяемые множества frozenset

Публикуем решения на урок 8.8 Генераторы множеств и frozenset.

Как записывается генератор множества?

{выражение for переменная in последовательность}

Используя генератор множеств, дополните приведенный код, так чтобы получить множество, содержащее уникальные значения списка items. Результат вывести на одной строке, в упорядоченном виде, разделяя элементы одним символом пробела.

Примечание 1. Обратите внимание, некоторые элементы списка – числа, а некоторые – строки, при этом строки необходимо трактовать как числа.
Примечание 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

Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы

Понравилась статья? Поделиться с друзьями:
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x