Похожие презентации:
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-ELSEnew_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
Программирование