Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Использование генератора для формирования спискаСодержание книги
Поиск на нашем сайте
Например, создание списка кубов целых чилел от 1 до 10 можно осуществить следующим образом: >>> a_list=[x**3 for x in range (1, 11)] Выражение x**3 for x in range(1,11) является генераторным выражением. Оно имеет тип генератора: >>> type (x**3 for x in range (1, 11)) и состоит из выражения x**3, за которым следует оператор for для итерабельного типа. В таком виде генераторное выражение может использоваться только в качестве единичного аргумента в функциях. В остальных случаях необходимо указывать его в скобках, например при анализе, является ли тип generator итерабельным: >>> import collections В приведенном примере сформированные кубы целых чисел сохранены в памяти в виде списка. Для длинных последовательностей это не всегда удобно. Рассмотрим вариант генерации кубов чисел без сохранения их в памяти: >>> gen=(x**3 for x in range (1, 11)) Поскольку значения генератора gen не сохранены в памяти повторное его использование ничего не дает: >>> for x in gen: Оглавление Использование генератора для формирования множества Создадим с помощью генератора множество букв, из которых состоит предложение "Карл украл у Клары кораллы", представив их в верхнем регистре: >>> a_set={x for x in 'Карл украл у Клары кораллы'.upper()} Оглавление Использование генератора для формирования словаря В качестве последнего примера использования генераторов рассмотрим создание словаря, ключами которого являются числа, заданные в списке, а значениями – квадратные корни этих чисел: >>> {x:x**(1/2) for x in [2, 5, 25] } Формировать элементы последовательностей также можно с использованием встроенной функции map() (см. подраздел 1.5.2 лаб. раб. №6). Оглавление Копирование объектов В подразделе 1.4 при описании метода copy() был использован термин поверхностная копия. Поскольку существует еще и глубокая копия, дадим разъяснение этим терминам. · один для создания поверхностной копии – copy.copy(x); · другой для создания глубокой копии – copy.deepcopy(x). Различие между между поверхностным (англ. shallow) и глубоким (англ. deep) копированием имеет смысл только для составных объектов (объектов, которые содержат другие объекты, например, списки, словари или экземпляры классов): · поверхностное копирование создает новый составной объект, в который включаются ссылки на объекты, содержащиеся в исходном объекте; · глубокое копирование создает новый составной объект, в который рекурсивно включаются копии объектов, составляющих исходный объект. В качестве примера создадим и сравним поверзностную и глубокую копию словаря: >>> import copy Видно, что при использовании поверхностного копирования словаря (функции copy()) изменения в полученной копии привели к изменению оригинала. При использовании глубокого копирования (функции deepcopy()) этого не произойдет: >>> a_dict={1:5,2:{3:25}} Для создания "поверхностной" копии помимо метода copy() модуля copy() можно также использовать: · методы copy() изменяемых объектов: списков, множеств и словарей (см. подразделы 2.3 лаб. раб. №3, 1.4 и 2.2); · срезы последовательностей (см. подраздел 1.4.2 лаб. раб. №3); · конструкторы, аргументы которых содержат тот же тип, что и создаваемый объект (см. описания конструкторов всех рассмотренных типов). Оглавление Индивидуальные задания Разработать программу на языке Python, которая выполняет следующее: · 1 Создает множество a_set, содержащее не менее 7 элементов любых разрешенных типов, с помощью (см. колонку "Множество"/"Создание" табл. №1): § 1 – литерала; § 2 – конструктора; § 3 – генератора. · 2 Создает итерабельный объект it_ob, содержащий не менее трех элементов, имеющихся в объекте a_set, и проверить, все ли элементы it_ob хэшируемы. Если нет – заменить нехэшируемые элементы хэшируемыми. · 3 Преобразует объект it_ob в множество b_set и выполняет над множествами a_set и b_set операции (см. колонку "Множество"/"Операции" табл. №1): § 1 – union(); § 2 – intersection(); § 3 – difference(); § 4 – symmetric_difference(). · 4 Создает словарь a_dict с помощью (см. колонку "Словарь"/"Создание" табл. №1): § 1 – литерала; § 2 – конструктора с именованными аргументами; § 3 – конструктора с аргументом, имеющем тип словаря; § 4 – конструктора с аргументом итерабельного типа; § 5 – генератора. · 5 Выполняет следующие методы словаря a_dict (см. колонку "Словарь"/"Методы" табл. №1): § 1 – clear(); § 2 – get(key[, default]); § 3 – items(); § 4 – keys(); § 5 – pop(key[, default); § 6 – popitem(); § 7 – setdefault(key[, default); § 8 – update([dict2]); § 9 – values().
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2021-11-27; просмотров: 248; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.39 (0.017 с.) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||