Экспресс-курс по Python: Лекция №2 Массивы и циклы

Массивы в языке Python реализованы в виде следующих конструкций: строки, списки, кортежи, множества и словари. Эти конструкции достаточно мощные и выразительные, что обеспечивает эффективность использования языка Python.

Начнем со строк. Строки - это последовательности символов. Создать строки можно следующим образом:

  1. s = "Hello, World!"
  2. p = 'Миру - мир!'

Поскольку строка представляет собой набор символов, то можно обращаться к отдельным символам в строке, и даже выделять под строки. Доступ к символу с индексом n (начиная с нуля!) осуществляется с помощью выражения s[n], подстроку можно выделить, указав интервал s[n:m] вот пример:

  1. s = "Мама мыла раму"
  2. print(s[6])
  3. p = s[5:9]
  4. print(p)

ы
мыла

Если индекс отрицательный, то отсчет идет от конца строки. При этом индекс -1 соответствует последнему символу. Хотя к символам строки можно обращаться через индекс, но при этом нельзя изменять символы строки.

Поскольку строка задается с помощью кавычек (двойных или одинарных), то для того, чтобы в самой строке использовать символы кавычек, их необходимо экранировать следующим образом:

  1. s = "А Балда приговаривал с укоризной: \"Не гонялся бы ты, поп, за дешевизной\""
  2. print(s)

А Балда приговаривал с укоризной: "Не гонялся бы ты, поп, за дешевизной"

В строках можно использовать специальные символы, которые задается следующим образом:

\n      новая строка
\t      табуляция

Поэтому более красивой будет следующий вывод:

  1. s = "\n\n\t\tА Балда приговаривал с укоризной:\n \
  2. \t\t\"Не гонялся бы ты, поп, за дешевизной\"\n\n"
  3. print(s)


А Балда приговаривал с укоризной:
"Не гонялся бы ты, поп, за дешевизной"

Со строками можно выполнять операции конкатенации с помощью оператора "+", который мы уже проходили. Строку можно умножить на целое число n, в результате чего строка будет повторена n раз:

  1. s = "Мама"
  2. s = s * 3
  3. print(s)

МамаМамаМама

Узнать длину строки можно с помощью функции len(s):

  1. s = "Hello, World!"
  2. print(len(s))

13

Часто возникает задача поиска подстроки в строке. Для этого используем функцию s.find(str):

  1. s = "Жили у Бабуси два веселых гуся"
  2. n = s.find("два")
  3. print(n)

14

Часто необходимо разбить строку на подстроки, разделенные каким-либо символом. Для этого используем функцию s.split(c). Эта функция возвращает массив строк.

  1. s = "Мама|Папа|Я"
  2. S = s.split('|')
  3. print(S[1])

Папа

Теперь рассмотрим списки в языке Python. По сути списки представляют собой массивы различных объектов, с которыми можно работать разнообразными функциями. Создать список можно следующими способами:

  1. A = [] # пустой список
  2. B = [1, 1, 2, 3, 5, 8, 13, 21] # числа Фибоначчи
  3. C = ["мама", 120, 'z', "список"] # смешанный список
  4. D = [[1, 2], ['a', 'b', 'c'], [[3.14, "abc"], [120, 140]]] # список списков

К элементам списка можно обращаться через индексы, которые начинаются с нуля. В отличии от строк, элементы списков можно заменять:

  1. A = [1, 2, 3]
  2. A[1] = "новое значение"
  3. print(A)

[1, 'новое значение', 3]

Для работы со списками существует большое количество методов. Вот основные:

list.append(x)      добавляет элемент в конец списка
list.insert(i, x)      вставляет на i-ый элемент значение x
list.count(x)      возвращает количество элементов со значением x
list.reverse()      разворачивает список
list.clear()      очищает список

Рассмотрим понятие кортежа в Python. Кортеж очень напоминает список, но в отличии от списков кортежи нельзя изменить после создания, за счет чего достигается более эффективная реализация кортежей. Создать кортеж можно следующим образом:

  1. A = ("Shamin", "Roman", 1975)

К элементам кортежа можно обращаться через индекс A[1], но можно и более эффективным способом:

  1. A = ("Shamin", "Roman", 1975)
  2. Surname, Name, Date = A
  3. print(Surname + " " + Name + " " + Date.__str__())

Shamin Roman 1975

Теперь рассмотрим множества в Python. Множества отличаются от списков и кортежей тем, что хранящиеся в них объекты являются неупорядоченными. Кроме того, множества содержат только уникальные элементы. Зато с множествами можно производить стандартные операции объединения, пресечения и разности

|      объединение
&      пересечение
-      разность
^      симметричная разность

создается множество с помощью оператора set():

  1. A = set(['a', "apple", 120])

Добавить один элемент в множество можно с помощью метода A.add(x), чтобы добавить другое множество используется операция A.update([]), для удаления элементов метод A.remove(x). Приведем пример работы с множествами:

  1. A = set(["apple", "orange"])
  2. A.add("pear")
  3. B = set(["apple", "pear", "banana"])
  4. C = A | B
  5. D = A & B
  6. print(C)
  7. print(D)

{'banana', 'orange', 'apple', 'pear'}
{'apple', 'pear'}

Элементы списков и кортежей индексируются натуральными числами от 0 до N-1, где N - количество элементов в массиве, но часто к элементам массивам удобнее обращаться по номерам. Для этого в Python есть конструкция, которая называется словарем. Покажем словарь на примере:

  1. people = {
  2. "Name" : "Роман",
  3. "Surname" : "Шамин",
  4. "Date" : 1975
  5. }
  6. print(people)
  7. people["Name"] = "Михаил"
  8. people["Date"] = 2008
  9. print(people)

{'Surname': 'Шамин', 'Date': 1975, 'Name': 'Роман'}
{'Surname': 'Шамин', 'Date': 2008, 'Name': 'Михаил'}

Для работы с массивами необходимо использовать циклы. Основной конструкцией цикла в языке Python является мощный оператор for. Приведем простой пример:

  1. for i in [1,2,3,4,5]:
  2. a = i * i
  3. print(a)

1
4
9
16
25

Переменная цикла i последовательно проходит все значения заданного списка, при этом каждый раз выполняется блок операторов, выделенный отступами. При создании цикла удобно пользоваться функций range(a,b), которая создает последовательность чисел от a до b-1. Если в этой функции указать еще третий аргумент, то можно задать шаг выполнения цикла. А если использовать только один аргумент range(b), то будет создана последовательность от 0 до b-1:

  1. for i in range(10):
  2. a = i * i
  3. print(a)
  4.  
  5. for i in range(10, 101, 10):
  6. a = i
  7. print(a)

0
1
4
9
16
25
36
49
64
81

10
20
30
40
50
60
70
80
90
100

В цикле for можно перебирать не только числовые последовательности, но и любые списки, строки. Вот примеры:

  1. A = set(["Мама", "Папа", "Я"])
  2. for a in A:
  3. print(a)
  4.  
  5. S = "Миру - Мир!"
  6. for s in S:
  7. print("\t" + s)

Я
Папа
Мама
М
и
р
у

-

М
и
р
!

При выполнении цикла часто возникает необходимость досрочного прекращения выполнения цикла и пропустить какую-либо итерацию. Для этого используются конструкции break и continue:

  1. for x in range(-10, 10):
  2. if x == 0:
  3. continue
  4. y = 1 / x
  5. print(y)
  6.  
  7. for x in range(100):
  8. if x == 13:
  9. break
  10. print(x)

-0.1
-0.1111111111111111
-0.125
-0.14285714285714285
-0.16666666666666666
-0.2
-0.25
33333333333333
-0.5
-1.0
1.0
0.5
0.3333333333333333
0.25
0.2
0.16666666666666666
0.14285714285714285
0.125
0.1111111111111111

0
1
2
3
4
5
6
7
8
9
10
11
12

Кроме конструкции for часто используется другой цикл while этот цикл работает до тех пор, пока будет истинным условие цикла. Вот пример:

  1. a = ""
  2. while a != "конец":
  3. a = input("Я не отстану, пока не введете секретное слово > ")

Я не отстану, пока не введете секретное слово > начало
Я не отстану, пока не введете секретное слово > конец

И еще математический пример:

  1. x = 0
  2. dx = 0.1
  3. X = 1
  4. while x <= X:
  5. print(x * x)
  6. x = x + dx

0
0.010000000000000002
0.04000000000000001
0.09000000000000002
0.16000000000000003
0.25
0.36
0.48999999999999994
0.6399999999999999
0.8099999999999998
0.9999999999999998

В операторе while тоже применимы конструкции break и continue.

В этой лекции мы рассмотрели важные и мощные конструкции массивов и операторы для организации циклов. В следующей лекции мы рассмотрим функции и модули, после чего уже сможем писать взрослые программы.

Home | Лекции | Python | Видео | Скачать | Ссылки
Copyright (c) 2017, Roman Shamin
8
22795
3