Слайд 1Языки программирования
Лекция 5
Слайд 2Работа со списками
Список (list) – это структура данных для хранения
объектов различных типов.
Списки в Python – упорядоченные изменяемые наборы объектов
произвольных типов (почти как массив, но типы могут отличаться).
[23, 656, -20, 67, -45] # список целых чисел
[4.15, 5.93, 6.45, 9.3, 10.0, 11.6] # список из дробных чисел
["Katy", "Sergei", "Oleg", "Dasha"] # список из строк
["Москва", "Титова", 12, 148] # смешанный список
[[0, 0, 0], [0, 0, 1], [0, 1, 0]] # список, состоящий из списков
Слайд 3 Как списки хранятся в памяти?
Слайд 4Создание списков
>>>a = []
>>>type (a)
< class ‘list’
>
>>>b = list ()
>>>type (b)
< class ‘list’>
>>>a
= [1, 2, 3]
>>>type (a)
< class ‘list’ >
>>> a = [1, 3, 5, 7]
>>> b = a[:]
>>> print(a)
[1, 3, 5, 7]
>>> print(b)
[1, 3, 5, 7]
>>> a= [1, 3, 5, 7]
>>> b = list(a)
>>> print(a)
[1, 3, 5, 7]
>>> print(b)
[1, 3, 5, 7]
Слайд 5Создание списков
>>> a = [1, 3, 5, 7]
>>> b =
a
>>> print(a)
[1, 3, 5, 7]
>>> print(b)
[1, 3, 5, 7]
>>> a[1]
= 10
>>> print(a)
[1, 10, 5, 7]
>>> print(b)
[1, 10, 5, 7]
Генератор списков –способ построить новый список, применяя выражение к каждому элементу последовательности.
>>> c = [c * 3 for c in ’list’]
>>> c
[’lll’, ’iii’, ’sss’, ’ttt’]
Слайд 6Базовые операции над списками
>>> len([1, 2, 3])
# Длина
3
>>> [1, 2, 3] +
[4, 5, 6] # Конкатенация
[1, 2, 3, 4, 5, 6]
>>> [‘Ni!’] *4 # Повторение
[‘Ni!’, ‘Ni!’, ‘Ni!’, ‘Ni!’]
>>> str([1, 2]) + “34” # То же, что и “[1, 2]” + “34”
‘[1, 2]34’
>>> [1, 2] + list(“34”) # То же, что и [1, 2] + [“3”, “4”]
[1, 2, ‘3’, ‘4’]
Слайд 7Базовые операции над списками
>>> a = []
>>> a.append(3)
>>>
a.append("hello")
>>> print(a)
[3, 'hello' ]
>>> b = [2, 3, 5]
>>> print(b)
[2,
3, 5]
>>> b.remove(3)
>>> print(b)
[2, 5]
Слайд 8Базовые операции над списками
>>> c = [3, 5, 1, 9,
6]
>>> print(c)
[3, 5, 1, 9, 6]
>>> del c[2]
>>> print(c)
[3, 5,
9, 6]
>>> d = [2, 4, 9]
>>> print(d)
[2, 4, 9]
>>> d[1] = 17
>>> print(d)
[2, 17, 9]
Слайд 9Присваивание по индексам и срезам
>>> a = [3, 5, 7,
10, 3]
>>> a[2]
7
>>> a[-1]
3
>>> a[1:4]
[5, 7, 10]
>>> L = [‘spam’,
‘Spam’, ‘SPAM!’]
>>> L[1] = ‘eggs’ # Присваивание по индексу элемента
>>> L
[‘spam’, ‘eggs’, ‘SPAM!’]
>>> L[0:2] = [‘eat’, ‘more’] # Присваивание срезу: удаление+вставка
>>> L # Элементы 0 и 1 были заменены
[‘eat’, ‘more’, ‘SPAM!’]
Слайд 10Методы списков
list.append(x)
list.append(x)
>>> a = [1, 2]
>>> a.append(3)
>>> print(a)
[1, 2, 3]
list.extend(L)
>>>
a = [1, 2]
>>> b = [3, 4]
>>> a.extend(b)
>>> print(a)
[1,
2, 3, 4]
Слайд 11Методы списков
list.insert(i, x)
>>> a = [1, 2]
>>> a.insert(0, 5)
>>>
print (a)
[5, 1, 2]
>>> a.insert(len(a), 9)
>>> print(a)
[5, 1, 2, 9]
list.remove(x)
>>>
a = [1, 2, 3]
>>> a.remove(1)
>>> print (a)
[2, 3]
Слайд 12Методы списков
list.pop([i])
>>> a = [1, 2, 3, 4, 5]
>>> print
(a.pop(2))
3
>>> print(a.pop())
5
>>> print(a)
[1, 2, 4]
list.clear()
>>> a = [1, 2, 3,
4, 5]
>>> print(a)
[1, 2, 3, 4, 5]
>>> a.clear()
>>> print (a)
[]
Слайд 13Методы списков
list.index(x[,start[,end]])
>>> a = [1, 2, 1, 2, 1]
>>> a.index(1),
a.index(2)
(0,1)
>>> a.index(1,1)
2
>>> a.index(1,3,5)
4
>>> a.index(3)
ValueError: 3 is not in list
list.count(x)
>>> a=[1,
2, 2, 3, 3]
>>> print (a.count(2))
2
>>> print (a.count(4))
0
Слайд 14Методы списков
max(), min()
>>> a = [1, 2, 3, 4, 5]
>>>
max(a), min(a)
(5,1)
all ()
all([0,None])
False
all([0,None,1])
False
all([])
True
all([“str”, 10])
True
any()
any([0,None])
False
any([0,None,1])
True
any([])
False
Слайд 15Переворачивание списка
reverse()
a = [1, 2, 3, 4, 5]
a.reverse()
a
[5, 4, 3,
2, 1]
A = [1,2,3,4,5]
List (reversed(a))
[5,4,3,2,1]
Слайд 16Сортировка списка
sort([key=None][, reverse=False])
a = [2,5,1,4,3]
a.sort()
a
[1,2,3,4,5]
a = [2,5,1,4,3]
a.sort(reverse = True)
a
[5,4,3,2,1]
Слайд 17Сортировка списка
a = [“единица1”, “Единый”, “Единица2”]
a.sort()
for i in a:
print(i, end = “ “)
Единица2 Единый единица1
--------------------------
a = [“единица1”, “Единый”,
“Единица2”]
a.sort(key = str.lower)
for i in a:
print(i, end = “ “)
единица1 Единица2 Единый
Слайд 18Сортировка списка
sorted([, key=None][, reverse=False])
a = [2,7,10,4,6,8,9,3,1,5]
sorted(a)
[1,2,3,4,5,6,7,8,9,10] # новый список!
sorted(a,
reverse=True)
[10,9,8,7,6,5,4,3,2,1]
Слайд 19Заполнение списка числами
range([, ][, ])
>>> list(range(11))
[0,1,2,3,4,5,6,7,8,9,10]
>>> list(range(1,16))
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
>>> list(range(15,0,-1))
[15,14,13,12,11,10,9,8,7,6,5,4,3,2,1]
Слайд 20Кортежи (tuples)
Кортеж (tuple) – это неизменяемая структура данных
>>> a
= ()
>>> print (type (a))
>
>>> b = tuple()
>>> print (type (b))
Слайд 21Создание кортежа
>>> a = (1, 2, 3, 4, 5)
>>>
print(type (a))
5)
>>> a = tuple ((1, 2, 3, 4))
>>> print(a)
(1, 2, 3, 4)
>>> tuple() # создаем пустой кортеж
()
>>> tuple(“String”) # преобразуем строку в кортеж
(‘S’, ‘t’, ‘r’, ‘i, ‘n’, ‘g’)
Слайд 22Создание кортежа
>>> tuple([1,2,3,4,5]) # преобразуем список в кортеж
(1, 2,
3, 4, 5)
t1 = (5,) # кортеж из одного элемента!
t2
= (1, “str”, (3, 4)) # кортеж из 3х элементов
>>> t = (5); type(t) # получим число
t = (“str”); type(t) # получим строку
Слайд 23Доступ к элементам кортежа
>>> a = (1, 2, 3, 4,
5)
>>> a[0]
1
>>> a[::-1] # изменим порядок следования элементов
(5, 4, 3,
2, 1)
>>> a[1:3] # срез
(2, 3)
>>> 5 in a, 8 in a
(True, False)
>>> (1, 2, 3) * 3 # Повторение
(1, 2, 3, 1, 2, 3, 1, 2, 3)
>> (1, 2, 3) + (4, 5, 6) # Конкатенация
(1, 2, 3, 4, 5, 6)
Слайд 24Доступ к элементам кортежа
>>> a = (1, 2, 3,
4, 5)
>>> a[1] = 3
Traceback (most recent
call last):
File "
" , line 1 , in
a[1] = 3
TypeError: 'tuple' object does not support item assignment
Слайд 25 Удаление кортежей
>>> a = (1, 2, 3, 4,
5)
>>> del a[0]
TypeError: 'tuple' object doesn't support item deletion
--------------------------------------
>>>
del a
>>> print (a)
NameError: name 'a' is not defined
Слайд 26Преобразование кортежа в список и обратно
>>> lst = [1, 2,
3, 4, 5]
>>> print (type (lst))
>>> print (lst)
[1, 2,
3, 4, 5]
>>> tpl = tuple(lst)
>>> print(type (tpl))
>>> print (tpl)
(1, 2, 3, 4, 5)
>>> tpl = (2, 4, 6, 8, 10)
>>> print (type (tpl))
>>> print(tpl)
(2, 4, 6, 8, 10)
>>> lst = list(tpl)
>>> print(type(lst))
>>> print(lst)
[2, 4, 6, 8, 10]
Слайд 27Упражнения и контрольные вопросы
1. Что представляют собой списки в Python?
2.
Что такое генератор списков?
3. Какой метод применяется для добавления элемента
в конец списка?
4. Какой метод применяется для добавления последовательности в конец списка?
5. Какой результат получим после выполнения следующего кода:
>>> arr =[56,34,78]
>>> arr.insert(-1, 12); arr
6. Какой результат получим после выполнения следующего кода:
>>> arr =[2,3,4,5]
>>> arr.pop(); arr
7. Какой результат получим после выполнения следующего кода:
>>> arr =[33,78,33,12]
>>> arr.remove(33); arr
8. Что такое кортеж?
9. Какими способами можно создать кортеж?
Слайд 28Словари (dict)
Словарь (dict) представляет собой структуру данных (которая еще называется
ассоциативный массив), предназначенную
для хранения произвольных объектов с доступом по ключу . Данные в словаре хранятся в формате ключ – значение.
Создание словаря:
>>> d = dict(); d # создание пустого словаря
{}
>>> d = dict(a=1, b=2); d
{’a’: 1, ’b’: 2}
>>> d = dict([("a", 1), ("b", 2)]); d # список кортежей
{’a’: 1, ’b’: 2}
>>> d = dict([["a", 1], ["b", 2]]); d # список списков
{’a’: 1, ’b’: 2}
Слайд 29Создание словаря
Объединить два списка в список кортежей позволяет функция zip():
>>>
k = ["a", "b"] # список с ключами
>>> v =
[1, 2] # список со значениями
>>> list(zip(k,v)) # создание списка кортежей
[(’a’,1), (’b’,1)]
>>> d = dict(zip(k,v)); d # создание словаря
{’a’: 1, ’b’: 2}
Слайд 30Создание словаря
d = {}; d # создание пустого словаря
{}
d =
{’a’: 1, ’b’: 2}; d
{’a’: 1, ’b’: 2}
d = {};
# создаем пустой словарь
d["a"] = 1
d["b"] = 2
d
{’a’: 1, ’b’: 2}
Слайд 31Создание словаря
>>> d = dict.fromkeys(['a', 'b'])
>>> d
{'a': None,
'b': None}
>>> d = dict.fromkeys(['a', 'b'], 100)
>>> d
{'a': 100, 'b': 100}
Генератор словарей:
>>> d = {a: a ** 2 for a in range(7)}
>>> d
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36}
Слайд 32Добавление записей в словарь
>>> d = {1: 2, 2: 4,
3: 9}
>>> d[1]
2
>>> d[4] = 4 **
2
>>> d
{1: 2, 2: 4, 3: 9, 4: 16}
>>> d['1']
Traceback (most recent call last):
KeyError: '1'
Слайд 33Операции над словарями
>>> d = {"a": 1, "b": 2}
>>> "a"
in d # ключ существует
True
>>> "c" in d
# ключ не существует
False
>>> "c" not in d # ключ не существует
True
Слайд 34Операции над словарями
>>> d = {"a": 1, "b": 2}
>>> d.get("a"),
d.get("c"), d.get("c", 800),
(1, None, 800)
>>> d = {"a": 1, "b":
2}
>>> d.setdefault("a"), d.setdefault("c"), d.setdefault("d", 0)
(1, None, 0)
>>> d
{’a’: 1, ’c’: None, ’b’: 2, ’d’: 0}
>> d.get("a"), d.get("c"), d.get("c", 800),(1, None, 800)>>> d = {"a": 1, "b": 2}>>> d.setdefault("a"), d.setdefault("c"), d.setdefault("d", 0)(1, None, 0)>>> d{’a’: 1, ’c’: None, ’b’: 2, ’d’: 0}">>> d.get("a"), d.get("c")," alt="Операции над словарями>>> d = {"a": 1, "b": 2}>>> d.get("a"), d.get("c"), d.get("c", 800),(1, None, 800)>>> d =">
Слайд 35Операции над словарями
>>> d = {"a": 1, "b": 2}
>>> len(d)
2
>>>
d = {"a": 1, "b": 2}
>>> del d["b"]; d
{’a’: 1}
Слайд 36Перебор элементов словаря
>>> d = {"x": 1, "y": 2, "z":
3}
>>> for key in d.keys():
print("({0} => {1})".format(key, d[key]), end = " ")
(x => 1) (y => 2) (x => 3)
>>> for key in d:
print("({0} => {1})".format(key, d[key]), end = " ")
(x => 1) (y => 2) (x => 3)
Слайд 37 Методы словарей
clear()
Удаляет все элементы словаря.
>>>
d2 = {"A1":"123", "A2":"456"}
>>> print(d2)
{'A2': '456', 'A1': '123'}
>>> d2.clear()
>>> print(d2)
{}
copy()
Создает
новую копию словаря.
>>> d2 = {"A1":"123", "A2":"456"}
>>> d3 = d2.copy()
>>> print (d3)
{'A1': '123', 'A2': '456'}
>>> d3["A1"]="789“
>>> print (d2)
{'A2': '456', 'A1': '123'}
>>> print (d3)
{'A1': '789', 'A2': '456'}
Слайд 38 Методы словарей
items()
Возвращает элементы словаря (ключ, значение) в
виде кортежей.
>>> d = {"A1": "123", "A2": "456"}
>>>
d.items()
dict_items([('A2', '456'), ('A1', '123')])
keys()
Возвращает ключи словаря.
>>> d = {"A1": "123", "A2": "456"}
>>> d.keys()
dict_keys(['A2', 'A1'])
Слайд 39Методы словарей
pop(key[, default])
Если ключ key есть в словаре, то данный
элемент удаляется из словаря
>>> d = {"A1": "123", "A2": "456"}
>>>
d.pop("A1")
'123'
>>> print(d)
{'A2': '456'}
popitem()
удаляет произвольный элемент и возвращает кортеж из ключа и значения:
d = {"a": 1, "b": 2}
d.popitem()
(’b’, 2)
Слайд 40Методы словарей
values()
возвращает объект dict_values, содержащий все значения словаря:
>>> d =
{"a": 1, "b": 2}
>>> d.values() # получаем объект dict_values
dict_values([1, 2])
>>>
list(d.values()) # получаем список значений
[1, 2]
Слайд 41Методы словарей
update()
добавляет элементы в словарь. Метод изменяет текущий словарь и
ничего не возвращает:
>>> d = {"a": 1, "b": 2}
>>> d.update(c
= 3); d
{’a’: 1, ’b’: 2, ’c’: 3}
>>> d.update({c = 10}); d
{’a’: 1, ’b’: 2, ’c’: 10}
Слайд 42Вопросы
1. Какие существуют способы создания словарей?
2. Что позволяет делать метод
get()?
3. Как работает метод setdefault()?
4. Какая функция позволяет получить количество
ключей в словаре?
5. Какими способами можно осуществить перебор элементов словаря?