Python. Сложные типы данных

Содержание

Слайд 2

Строки

Строки

Слайд 3

Что это? Строка – неизменяемая упорядоченная последовательность символов. Что значит неизменяемая?

Что это?

Строка – неизменяемая упорядоченная последовательность символов.

Что значит неизменяемая?

Так можно?
s=‘Hello, world’
s=‘Чмоки,

чмоки всем’

А так?
s=‘Hello, world’
s[1]=‘Ы’

В неизменяемых типах данных нельзя поменять элементы (в данном случае символы) из которых состоит объект, но можно перезаписать весь объект (например, строку) целиком. Это особенность связана с хранением данных в памяти ПК.

Слайд 4

Как с ними работать? Как и в Pascal, строки можно складывать,

Как с ними работать?

Как и в Pascal, строки можно складывать, сравнивать

и обращаться к символам.

Стандартные функции

S[i] – обращение к символу
S1+S2 – сложение строк
S*3 – дублирование строки

Слайд 5

Функции и методы И функции и методы выполняют действия. Разница между

Функции и методы

И функции и методы выполняют действия. Разница между ними

заключается в способе вызова.

Функция принимает данные в качестве аргументов (которые записываются в скобках). Функции не привязаны к объектам и могут быть вызваны просто по имени.
переменная=функция(параметры)
dlina=len(s)

Метод – это действие с конкретным объектом (строкой, списком, библиотекой, виджетом и т.п.). Для вызова необходимо сначала указать объект (например, строку), а потом через точку нужный метод. Методы также могут получать аргументы (в скобках).
переменная=объект.метод(параметры)
number=s.find(‘Ы’)

Слайд 6

Срезы Срез – извлечение фрагмента строки S=“Hello, World!” S[7:12] #World S[:5]

Срезы

Срез – извлечение фрагмента строки

S=“Hello, World!”
S[7:12] #World
S[:5] #Hello
S[7:] #World!
S[2:-2] #llo, Worl
S[2:11:2]

#lo ol
S[::3] #Hl r!
S[::-1] - ???

S[start:stop:step]
S – строка
start – начальный символ
stop – конечный символ (символ с номером stop в срез не входит)
step - шаг

Обращение к одному символу – это тоже срез

Слайд 7

Методы строк

Методы строк

Слайд 8

Списки

Списки

Слайд 9

Что это? Список – изменяемая упорядоченная последовательность данных разного типа. Также,

Что это?

Список – изменяемая упорядоченная последовательность данных разного типа.

Также, как и

для строк, используются: сложение, дублирование, функция len() и срезы.

L=[] #пустой список
L=list() #преобразовать в список (или создать пустой)
L=[1,5,”Hello, world”,42] #список со значениями

Генератор списка
L = [значение for параметр in диапазон]
L= [0 for i in range(5)] #список заполнят 5 элементов со значением 0

Слайд 10

В чём подвох? Задача: Задать список из 10 случайных чисел в

В чём подвох?

Задача:
Задать список из 10 случайных чисел в диапазоне

от 10 до 100.
Как это делалось на Pascal?

В пустом списке нет элементов. При попытке обратиться к элементу L[i], которого не существует будет выдаваться ошибка. Поэтому добавление элементов происходит следующим образом:

for i in range(10):
L[i]=randint(10,100)

from random import randint

L=list()

L=list()
for i in range(10):
L.append(randint(10,100))

Или можно использовать генератор:

L=[randint(10,100) for i in range(10)]

Слайд 11

Методы списков

Методы списков

Слайд 12

Функции списков Также наличие элемента в списке можно проверить с помощью

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

Также наличие элемента в списке можно проверить с помощью оператора

in.

L=[1,1,2,4,1]
X=1
while X in L:
L.remove(X)

Слайд 13

Множества

Множества

Слайд 14

Что это? Множество – неупорядоченная последовательность уникальных элементов. Может содержать только

Что это?

Множество – неупорядоченная последовательность уникальных элементов. Может содержать только данные

неизменяемых типов.

Можно использовать функции len(), max() и min().

A=set() #пустое множество или преобразовать в множество
A= set(“hello”) #будет множество {‘h’,’o’,’l’,’e’}
A={44, 22,55} #множество со значениями
A={} – а вот так нельзя, получится dict

… И генератор множества (как в списках)
a = {i ** 2 for i in range(10)}
# {0, 1, 4, 81, 64, 9, 16, 49, 25, 36}
Если использовать случайную генерацию, то значение записывается в множество только один раз и при совпадении не дублируется.
a = {random.randint(10) for i in range(5)}
# может быть {2, 5, 9} или {1, 2, 7, 5}

Слайд 15

Операции с множествами с=a | b c=a.union(b) 1) Объединение Возвращает множество,

Операции с множествами

с=a | b
c=a.union(b)

1) Объединение

Возвращает множество, содержащее неповторяющиеся элементы

первого и второго множеств.

a|=b
a.update(b)

с=a & b
c=a.intersection(b)

2) Пересечение

Возвращает множество, содержащее элементы, которые есть в первом и втором множествах.

a&=b
a.intersection_update(b)

Слайд 16

Операции с множествами с=a - b c=a.difference(b) 3) Разность Возвращает множество,

Операции с множествами

с=a - b
c=a.difference(b)

3) Разность

Возвращает множество, содержащее элементы первого

множества, которых нет во втором.

a-=b
a.difference_update(b)

с=a ^ b
c=a.symmetric_difference(b)

4) Симметрическая разность

Возвращает множество, содержащее элементы, входящие в первое или второе множества, но не в оба одновременно.

a^=b
a.symmetric_difference_update(b)

Слайд 17

Методы множеств Оператор in - возвращает значение True если элемент находится

Методы множеств

Оператор in - возвращает значение True если элемент находится в

множестве.
print( 3 in {3,5,7}) #true
print (‘a’ in {‘s’, ‘qwer’, ‘q’}) #false
Также существует обратный оператор not in.
Слайд 18

Функции

Функции

Слайд 19

Что это? Функция – группа команд, объединенных одним именем, возвращающая в

Что это?

Функция – группа команд, объединенных одним именем, возвращающая в точку

вызова какое-либо значение.

Предназначены для:
Структурирования (разбиения основного алгоритма на части) программы.
Оптимизации однотипных нестандартных действий.

Слайд 20

Как работает? Параметры – величины, от которых зависит выполнение процедуры или

Как работает?

Параметры – величины, от которых зависит выполнение процедуры или функции.


Формальные – используются при описании работы функции, конкретных значений не имеют.
Фактические – передаются в функцию в точке вызова, имеют конкретные значения.
Количество и тип формальных и фактических параметров должны совпадать.
Слайд 21

Функции def Имя_Функции(параметры, через, запятую): тело функции Если необходимо вернуть серию

Функции

def Имя_Функции(параметры, через, запятую):
тело функции

Если необходимо вернуть серию данных – используйте

сложные типы данных или реализуйте алгоритм несколькими функциями.

Переменные, объявленные внутри функции всегда (при отсутствии оператора global) являются локальными. Поэтому данные, используемые для работы функции лучше передавать через параметры, а возвращаемое значение передавать через оператор return.

def Имя_Функции(параметры, через, запятую):
тело функции
return значение

Слайд 22

Параметры Если при создании функции вы указали количество передаваемых ей параметров

Параметры

Если при создании функции вы указали количество передаваемых ей параметров и

их порядок, то и при вызове должно быть тоже количество параметров, заданных в нужном порядке.
Если вы передали недостаточно, или слишком много параметров для функции, вы получите ошибку TypeError.
Например: print(summa(2,3,4))

def summa():
a=int(input())
b=int(input())
return a + b

print(summa())

def proizv():
return a * b
print(summa())
print(proizv())
#не работает!

def summa(a,b):
return a + b
def proizv(c,d):
return c*d
a=int(input()) #глобальные переменные
b=int(input())
print(summa(a,b))
print(proizv(a,b)) #а так можно????

Слайд 23

Параметры-ключи Параметры в виде ключевых слов (Keyword argument) позволяют вводить данные

Параметры-ключи

Параметры в виде ключевых слов (Keyword argument) позволяют вводить данные в

функцию в произвольном порядке (т.е. не так, как описано в функции).

def person(name, age):
print (name, "is", age, "years old“)
person(age=23, name="John")

def summa(a,b):
return a + b
print(summa(a=5,b=4)) #9
print(summa(b=5,a=4)) # и снова 9
print(summa(c=5,d=4)) # не работает, т.к. таких ключей нет

Слайд 24

Значения по умолчанию Также параметры могут принимать значения по умолчанию. def

Значения по умолчанию

Также параметры могут принимать значения по умолчанию.

def summa(a,b=5):


return a + b
print(summa(4,4)) # 8
print(summa(5)) # 10

def summa(a=5,b=3):
return a + b
print(summa(2,2))
print(summa(2))
print(summa())

def Имя_Функции(параметр=значение):

# 4
# 5
# 8

При объявлении и вызове функций возможны различные сочетания параметров.

Слайд 25

Нужно больше параметров! В функцию можно ввести любое количество значений. Для

Нужно больше параметров!

В функцию можно ввести любое количество значений. Для этого

используется параметр *args.

def many(*args, **kwargs):
print( args )
print( kwargs )
many(1, 2, 3, name="Mike", job="proger")
# (1, 2, 3)
# {'job': 'proger', 'name': 'Mike'}

def fun(*args):
s=0
for i in args:
s+=i
return s
print(fun(1,3,5,7)) #16

После введения данных *args становится кортежем (неизменяемый список) и может быть использован внутри функции.
Для хранения произвольного количества параметров-ключей используется параметр **kvargs, который становится словарём.
На самом деле эти параметры можно называть, как угодно (например, *lol и **omg), но принято использовать *args и **kvargs.

Слайд 26

Функции Рекурсия – функция, вызывающая в теле сама себя. def Имя_Функции(параметры):

Функции

Рекурсия – функция, вызывающая в теле сама себя.

def Имя_Функции(параметры):
тело функции
условие

выхода
вызов себя

def factorial(n):
if n <= 0:
return 1
else:
return n * factorial(n - 1)

Слайд 27

Анонимные функции Анонимная функция (или лямбда-функция) - это короткая однострочная функция,

Анонимные функции

Анонимная функция (или лямбда-функция) - это короткая однострочная функция, которая

содержит только одну команду. Такая функция может принимать любое количество параметров и не имеет названия.

a = [[1, 2], [4, 1], [9, 10], [13, -3]]
a.sort(key=lambda x: x[1])
print(a) # [[13, -3], [4, 1], [1, 2], [9, 10]]

sum = lambda x, y: x + y
print(sum(1, 2)) #3

lambda аргументы: действие

Чаще всего используются в ситуациях, когда функция является параметром другой функции или метода.
Например, в качестве ключа при сортировке:

Слайд 28

Файлы

Файлы

Слайд 29

Что это? Файл – поименованная область на носителе информации, содержащая данные

Что это?

Файл – поименованная область на носителе информации, содержащая данные определенного

типа. Предназначены для долговременного хранения данных.

Типы файлов в Python:
Текстовые – хранят данные любого вида в текстовом формате. Могут иметь расширение .txt или .rtf.
Бинарные – хранят последовательность битов (расширение .bin).

Алгоритм работы с файлом:
Связать файл и файловую переменную
Открыть файл
Чтение/запись
Закрыть файл

Слайд 30

Связь и открытие Связь с файловой переменной и открытие файла происходят

Связь и открытие

Связь с файловой переменной и открытие файла происходят при

помощи функции open().

Ф.п.=open(‘имя_файла’, ‘способ_открытия’)
f=open(‘myfile.txt’, ‘r’)

Режимы можно комбинировать. Например, для записи бинарного файла используем ‘wb’, а для одновременного чтения и записи текстового – ‘r+’.
По умолчанию выбран текстовый файл, а режим – чтение.

Слайд 31

Чтение for i in f: print(i) Файл является порядковым типом, поэтому:

Чтение

for i in f:
print(i)

Файл является порядковым типом, поэтому:

Для чтения или

записи в нужном участке файла используют указатель.
Слайд 32

Запись А нельзя, как в Pascal построчно писать в файл? L=[1,2,3,4]

Запись

А нельзя, как в Pascal построчно писать в файл?

L=[1,2,3,4]
f=open(‘myfile.txt’, ‘w’)
for i

in L:
print(i, file=f)

Для построчной записи без предварительного преобразования можно использовать print() c аргументом file.

Записываемые данные должны быть строкового типа. Если они не строки, то их нужно предварительно преобразовать.
При записи в файл не происходит перевода курсора и данные пишутся в одной строке (для перевода можно использовать ‘\n’).