Программирование на языке Python
Контейнеры
Строки
Операции со строками
Методы строк
Срезы строк
Списки
Функции списков
Наполнение списков
Наполнение списков с условиями
Наполнение списка с вложенным условием
Наполнение списка с if-else
Наполнение из вложенных списков
Кортежи
Словари создание методы доступа
Удаление элементов словарей
Циклы на словарях
Создание словарей из контейнеров
Функции словарей
Функция Zip()
Итерационное наполнение словарей
Множества и работа с ними
Удаление элементов из множества
Добавление элементов в множества
Функции над множествами
Методы множеств U и 
Методы вычитания множеств
Методы сравнения множеств
Принадлежность к контейнерам
Что содержат контейнеры
Практикум
1.77M
Категория: ПрограммированиеПрограммирование

Lec3_Containers

1. Программирование на языке Python

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PYTHON
Модуль 3. Контейнеры и работа с ними

2. Контейнеры


Строки
Список
Кортеж
Словарь
Последовательность

3. Строки

СТРОКИ
\\ Обратный слеш
\’ Апостроф
\” Кавычки
\n Перенос строки
\t Табуляция
Являются константами
Для записи строк используются ‘, “, ‘‘‘
“ ”, ‘ ’, str() – пустая строка
Можно использовать экранирование и управляющие последовательности (как в С)
r перед строкой запрещает исполнять управляющие последовательности
Скачать тетрадь conteiners.ipynb можно по этой ссылке:

4. Операции со строками

ОПЕРАЦИИ СО СТРОКАМИ
Оператор + конкатенирует (склеивает) строки
Функция len возвращает длину строки
Доступ к элементам строки – по индексу в квадратных скобках
Срезы [начало:конец:шаг]
del – удаление строки, да и любого объекта

5. Методы строк

МЕТОДЫ СТРОК
s.lower(), s.upper() – преобразовать в
нижний/верхний регистр
s.split() – разделить строку по указанному
разделителю
s.count() – подсчитать количество
подстрок/символов в строке
Функция len() возвращает длину строки

6. Срезы строк

СРЕЗЫ СТРОК
Доступ к элементам строки – по индексу в квадратных скобках
Срез [начало:конец:шаг]
Начало, конец и шаг могут быть отрицательными
Индекс -1 означает последний элемент строки

7. Списки

СПИСКИ
Доступ к элементам строки – по индексу в
квадратных скобках
Добавление элементов append()
Сортировка sorted()
Расширение списка extend()

8. Функции списков

ФУНКЦИИ СПИСКОВ
all() – возвращает True, если все элементы True.
any() – возвращает True, если хотя бы один True.
enumerate() – возвращает кортежи, состоящие из
индексов и соответствующих элементов списка.
filter() – рассчитывает значения функции над каждым
элементом.
len() – вычисляет длину списка
>>> any([1,2,False])
True
>>> all([1,2,False])
False
>>> len([1,2,[3,[5,4],6]])
3
>>> list(filter(lambda val:val%2==0, [1,2,3,4,5,6,7,8,9]))
[2, 4, 6, 8]

9. Наполнение списков

НАПОЛНЕНИЕ СПИСКОВ
Примеры:
new_list = []
for i in old_list:
new_list.append(выражение(i))
new_list = [ выражение(i) for i in old_list ]

10. Наполнение списков с условиями

НАПОЛНЕНИЕ СПИСКОВ С УСЛОВИЯМИ
new_list = []
for i in old_list:
if фильтр(i):
new_list.append(выражение(i))
new_list = [ выражение(i) for i in old_list if фильтр(i) ]
Пример:
nums = [1, 12, 8, 14, 9, 23, 36, 5, 4 ]
greater_ten = [i for i in nums if(i>10)]
evens = [i for i in nums if(i%2==0)]
print(“Greater than ten :”,greater_ten)
print(“Even numbers list :”,evens)
Greater than ten : [12, 14, 23, 36]
Even numbers list : [12, 8, 14, 36, 4]

11. Наполнение списка с вложенным условием

НАПОЛНЕНИЕ СПИСКА С ВЛОЖЕННЫМ УСЛОВИЕМ
new_list = []
for i in old_list:
if фильтр1(i):
if фильтр2(i):
new_list.append(выражение(i))
new_list = [выражение(i) for i in old_list if фильтр1(i) if фильтр2(i)]
Пример:
>>>print([i for i in range(100) if(i%2==0) if(i%5==0)])
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

12. Наполнение списка с if-else

НАПОЛНЕНИЕ СПИСКА С IF-ELSE
new_list = []
for i in old_list:
if фильтр(i):
new_list.append(выражение1(i))
else: new_list.append(выражение2(i))
new_list = [выражение1(i) if фильтр(i) else выражение2(i) for i in old_list]
Пример:
>>>print([ x+1 if(x%2==0) else x**2 for x in [1,2,3,4,5,6,7,8] ])
[1, 3, 9, 5, 25, 7, 49, 9]

13. Наполнение из вложенных списков

НАПОЛНЕНИЕ ИЗ ВЛОЖЕННЫХ СПИСКОВ
new_list = []
for i in old_list:
for i1 in i
for …
for ik in ik-1
new_list.append(выражение(ik))
new_list = [выражение(ik) for i in old_list for i1 in i … for ik in ik-1]
Пример:
>>>List = [[1,2,3], [4,5,6], [3,4] ]
>>>print([res for x in List for res in x])
[1, 2, 3, 4, 5, 6, 3, 4]

14. Кортежи

КОРТЕЖИ
Аналогичные операции для списков, за исключением тех, которые
изменяют список
Доступ к элементам кортежа осуществляется через указание
индекса
Удаление отдельных элементов невозможно
Примеры:
>>>a, b, c = 1, 2, 3
>>>print(a)
>>>print(b)
>>>print(c)
1
2
3
Как вы думаете подходят ли средства
наполнения списков для кортежей?

15. Словари создание методы доступа

СЛОВАРИ СОЗДАНИЕ МЕТОДЫ ДОСТУПА
Для получения значения конкретного ключа используются квадратные скобки [ ]
Метод update() используется для обновления в словаре нескольких пар сразу
Метод get() возвращает значение по указанному ключу
Метод setdefault() добавляет пару ключ, значение, если она отсутствует в списке и возращает
значение по ключу
Метод keys() возвращает коллекцию ключей в словаре
Примеры:
>>> squares
{‘one’: 1, ‘two’: 4,
‘three’: 9}
>>> squares['four']=16
>>> squares['five']=25
>>> squares['six']=36
>>> squares
{‘one’: 1, ‘two’: 4, ‘three’: 9, ‘four’: 16, ‘five’: 25, ‘six’: 36}
>>> cubes.setdefault(4, 10)
10

16. Удаление элементов словарей

УДАЛЕНИЕ ЭЛЕМЕНТОВ СЛОВАРЕЙ
pop(‘key’) – удаление пары и вывод удаленного значения.
popitem() – удаление последней вставленной пары и ее
вывод в виде кортежа.
clear() – очистка содержимого словаря.
del – команда удаления объекта, может быть применена
как к паре, так и ко всему словарю.
Примеры:
>>> cubes={1:1, 2:8, 3:27, 4:64}
>>> cubes[3]=27.0
>>> cubes
{1: 1, 2: 8, 3: 27.0, 4: 64}

17. Циклы на словарях

ЦИКЛЫ НА СЛОВАРЯХ
Итерации на словарях можно совершать, используя методы:
items() – доступ к коллекции (ключ: значение) .
keys() – доступ к коллекции ключей.
values() – доступ к коллекции значений.
Примеры:
>>>for key, value in squares.items(): print(key,value)
11
24
39
5 25
6 36
8 64
9 81
>>>for key in squares.keys(): print(key)
1
>>>for value in squares.values(): print(value)
2
1
3
4
5
9
6
25
8
36
9
64
81

18. Создание словарей из контейнеров

СОЗДАНИЕ СЛОВАРЕЙ ИЗ КОНТЕЙНЕРОВ
Для создания словарей возможно использовать следующие методы:
copy() – копирует содержимое словаря .
dict() – создает словарь на основе других контейнеров.
fromkeys() – использует первый иттератор для ключей, остальные
данные для значений.
Примеры:
>>> cubes
{1: 1, 2: 8, 3: 27.0, 4: 64}
>>> d=cubes.copy()
>>> d[3]=27
>>> d
{1: 1, 2: 8, 3: 27.0, 4: 64}
>>> dict([(1,2),(2,4)])
{1: 2, 2: 4}
>>> cubes1=dict.fromkeys([1,2,3],10)
>>> cubes1
{1: 10, 2: 10, 3: 10}

19. Функции словарей

ФУНКЦИИ СЛОВАРЕЙ
all() – возвращает True, если все ключи True.
any() – возвращает True, если хотя бы один
ключ True.
len() – вычисляет длину словаря.
sorted() – сортирует словарь по ключам.
Примеры:
>>> cubes
{1: 1, 2: 8, 3: 27.0, 4: 64}
>>> all(cubes)
True
>>> any({1:1, False: True})
True
>>> len(cubes)
3
>>> sorted(cubes)
[1, 2, 3, 4]

20. Функция Zip()

ФУНКЦИЯ ZIP()
Функция объединяет контейнеры-итераторы в итератор типа кортеж.
>>> print(list(zip()))
[]
Примеры:
>>>for i in zip([1,2,3,4,5]): print(i)
(1,)
>>>student = [‘Shrangi’, ‘Akshay’, ‘Aman’ , ‘Joy’]
(2,)
>>>book_id = [1969, 2453, 2189, 1865 ]
(3,)
>>>price = [1100, 780, 800, 950]
(4,)
>>>for record in zip(student, book_id, price): print(record)
(5,)
(‘Shrangi’, 1969, 1100)
>>>for i in zip([1,2,3,4],[1,2,3],[1,2,3,4,5]): print(i)
(‘Akshay’, 2453, 780)
(1, 1, 1)
(‘Aman’, 2189, 800)
name = [“Amanda”, “Joey”, “Sheldon”, “Rebecca”]
(2, 2, 2)
(‘Joy’, 1865, 950)
(3, 3, 3)
id = [1,2,3,4]
Есть и обратное извлечение.
#zipping values
record = list( zip(name, id) )
print(record)
#unzipping values
names, ids = zip(*record)

21. Итерационное наполнение словарей

ИТЕРАЦИОННОЕ НАПОЛНЕНИЕ СЛОВАРЕЙ
Синтаксис итерационного наполнения для словарей такой же как и для списков.
{key: выражение(i) for (key, i) in контейнер}
Примеры:
>>>num=[1,2,3,4]
>>>name=['one','two','three','four']
>>>my_dict = {num:name for (num,name) in zip(num,name)}
>>>print(my_dict)
{1: ‘one’, 2: ‘two’, 3: ‘three’, 4: ‘four’}
>>>even_squares = {x: x**2 for x in range(0,12,2)}
>>>print(even_squares)
{0: 0, 2: 4, 4: 16, 6: 36, 8: 64, 10: 100}
>>>odd_squares = {x: x**2 for x in range(0,12) if (x%2==1) }
>>>print(odd_squares)
{1: 1, 3: 9, 5: 25, 7: 49, 9: 81, 11: 121}

22. Множества и работа с ними

МНОЖЕСТВА И РАБОТА С НИМИ
Поскольку множество неупорядоченно, невозможно получить гарантированный
доступ к каждому элементу, но можно увидеть все.
Примеры:
>>>ratings = {‘A’, ‘B’, ‘C’, ‘D’}
>>>for rate in ratings:
>>>print(rate)
B
D
A
C

23. Удаление элементов из множества

УДАЛЕНИЕ ЭЛЕМЕНТОВ ИЗ МНОЖЕСТВА
Для удаления элементов возможно использовать следующие методы:
discard() – удаляет элемент, совпадающий с аргументом в множестве без
проверки наличия.
remove() – удаляет элемент, совпадающий с аргументом в множестве с
проверкой наличия, если его нет сообщает об ошибке.
pop() – удаляет произвольный элемент и выводит его.
clear() – удаляет содержимое всего множества.
del – удаляет все множество
>>>a={1,2,3,4}
>>>a.remove(3)
>>>print(a)
{1,2,4}
Примеры:
>>>num_set={10,8,6,4}
>>>deleted = num_set.pop()
>>>print(deleted)
>>>print(num_set)
8
{10,6,4}
>>>a = {1,5,10,15,20}
>>>a.clear()
>>>print(a)
{}

24. Добавление элементов в множества

ДОБАВЛЕНИЕ ЭЛЕМЕНТОВ В МНОЖЕСТВА
Для добавления элементов можно использовать следующие методы:
add() –.добавляет элемент к множеству.
update() –добавляет множество к множеству.
frozenset() – превращает множество в неизменяемое
Примеры:
>>>fruits = {“apple”, “banana”,”cherry”}
>>>fruits = {“apple”, “banana”,}
>>>fruits.add(“strawberry”)
>>>fruits.update([1,2,3])
>>>print(fruits)
>>>print(fruits)
{‘apple’, ‘banana’, ‘cherry’, ‘strawberry’}
{1, 2, 3, ‘apple’, ‘banana’}
>>>fruits.update({‘cherry’, ’kiwi’ })
>>>immutable_set = frozenset((2,4,2,1,2,3))
>>>print(immutable_set)
frozenset({1, 2, 3, 4})
>>> print(fruits)
{1, 2, 3, ‘apple’, ‘banana’, ‘cherry’, ‘kiwi’}

25. Функции над множествами

ФУНКЦИИ НАД МНОЖЕСТВАМИ
all() – возвращает True, если все элементы True.
any() – возвращает True, если хотя бы один элемент True.
len() – выдает количество элементов.
max() – возвращает максимальный элемент, работает на множествах одного типа.
min() – возвращает минимальный элемент, работает на множествах одного типа.
sorted() – сортирует однотипное множество.
Примеры:
>>>a={1,2,2,3,3,4}
>>>print(len(a))
4
>>>a={1,2,3,5,2,9,10}
>>>print(any({0, False}) )
>>>print( max(a))
>>>print(all({1, ‘Hello’, True}) )
>>>print( min(a))
False
10
True
1
>>>sorted({6,5,4,3,4,5,2,1,4})
[1, 2, 3, 4, 5, 6]

26. Методы множеств U и 

МЕТОДЫ МНОЖЕСТВ U И
union() – возвращает множество включающее элементы
обоих множеств.
intersection() – возвращает множество элементов
принадлежащих обоим множествам.
Примеры:
>>>A= {1, 2, 3, 4} ; B= {2, 4, 6, 4}
>>>print( A.union(B) )
{1, 2, 3, 4, 6}
>>>A= {1, 2, 3, 4} ; B= {2, 4, 6, 4}
>>>print( A.intersection(B) )
{ 2, 4 }

27. Методы вычитания множеств

МЕТОДЫ ВЫЧИТАНИЯ МНОЖЕСТВ
difference() – удаляет элементы одного множества из
другого.
symmetric_difference() – удаляет множество элементов
принадлежащих обоим множествам.
Методы intersection_update(), difference_update(),
symmetric_difference_update() выполняют те же
функции, но сохраняют исходное множество, а результат
выводят в новое множество.
Примеры:
>>>print({1,2,3,4}.difference({3,4,5,6}) )
>>>print({1,2,3,4}.difference({3,4,5,6}, { 1,3,4,5}) )
{1, 2}
>>>print({1,2,4,5,6}.symmetric_difference({ 4, 5, 6, 7, 8 }) )
{2}
{1, 2, 7, 8}

28. Методы сравнения множеств

МЕТОДЫ СРАВНЕНИЯ МНОЖЕСТВ
isdisjoint() – определяет являются множества абсолютно разными, то есть не
пересекающимися.
issubset() – определяет является ли множество подмножеством множества в аргументе.
issuperset() – определяет является ли множество в аргументе подмножеством.
Примеры:
>>>print( {1,2,3}.isdisjoint( {5,6,7} ) )
>>>print( {1,2,3}.issuperset( {1, 2} ) )
>>>print( {1,2,3}.isdisjoint( {5,2,7} ) )
>>>print( {1,2,3}.issuperset( {1, 4} ) )
True
True
False
>>>print( {1,2,3}.issubset( {1,2,3,5,6,} ) )
>>>print( {1,2,8}.issubset( {1,2,3,5,6,} ) )
True
False
False

29. Принадлежность к контейнерам

ПРИНАДЛЕЖНОСТЬ К КОНТЕЙНЕРАМ
• in – оператор выдает True, если данное находится в контейнере.
• not in – оператор выдает True, если данное не находится в
контейнере.
Примеры:
>>>print( “Cherry” in {“Apple”, “Cherry”, “Kiwi”} )
>>>print( “Cherry” not in {“Apple”, “Cherry”, “Kiwi”} )
True
>>>squares={1:1, 2:4, 3:9, 4:16, 5:25, 6:36, 8:64, 9:81, 10:100}
False
>>>7 in squares
>>> [1,2] in [1,2,3]
False
>>> 2 in [1,2,3]
False
>>>8 in squares
True
True

30. Что содержат контейнеры

ЧТО СОДЕРЖАТ КОНТЕЙНЕРЫ
Контейнеры не содержат данные, но содержат ссылки на них.
Объекты в Python наряду с данными содержат и методы для работы с ними.
Чтобы определить размер объекта в байтах необходимо использовать метод getsizeof() из
модуля sys.
Примеры:
>>>import sys
>>>sys.getsizeof(5)
24
>>>sys.getsizeof(5.3)
24
>>>from decimal import Decimal
>>>sys.getsizeof(Decimal(5.3))
80
>>>sys.getsizeof([])
72
>>>sys.getsizeof([1])
88
>>>sys.getsizeof([1, 2, 3, 4])
104
>>>sys.getsizeof('')
37
>>>sys.getsizeof('1')
38
>>>sys.getsizeof('1234')
41
>>>sys.getsizeof(u'')
50
>>>sys.getsizeof(u'1')
52
>>>sys.getsizeof(u'1234')
58

31. Практикум

ПРАКТИКУМ
Задачи по данной лекции можно
найти здесь:
https://udoba.org/node/916
Домашнее задание приведено в тетради containers.ipynb
English     Русский Правила