На уроке объясняется, как в языке python представлены списки (вместо массивов); объясняется про создание списков на Python.
Часть I: Коллекции: Списки / массивы
- Cписки — это изменяемые последовательности в отличие от строк.
- Представим строку как объект в памяти, в этом случае, когда над строкой выполняются операции конкатенации и повторения, то сама строка не меняется, но в результате выполнения операции в другом месте памяти создается другая строка.
- В строку нельзя добавить новый символ или удалить существующий, не создав при этом новой строки.
Пример:
Так, например, в Питоне нельзя переприсваивать значение для отдельных символов строки.
Программа выдаст ошибку!
| s=»aaa»; s[1]=»b»; print(s1) |
Создание списков на Python
- Так выглядит в коде Python пустой список:
s = [] # Пустой список
- Примеры создания списков со значениями:
| l = [25, 755, -40, 57, -41] # список целых чисел l= [1.13, 5.34, 12.63, 4.6, 34.0, 12.8] # список из дробных чисел l = [«Sveta», «Sergei», «Ivan», «Dasha»] # список из строк l = [«Москва», «Иванов», 12, 124] # смешанный список l = [[0, 0, 0], [1, 0, 1], [1, 1, 0]] # список, состоящий из списков l = [‘s’, ‘p’, [‘isok’], 2] # список из значений и списка |
2. Списки при помощи функции List()
Получаем список при помощи функции List()
| empty_list = list() # пустой список l = list (‘spisok’) # ‘spisok’ — строка print(l) #[‘s’, ‘p’, ‘i’, ‘s’, ‘o’, ‘k’] — результат — список |
3. Создание списка при помощи функции Split()
- Используя функцию split в Питон можно получить из строки список. Рассмотрим пример:
| stroka =»Hello, world» # stroka — строка lst=stroka.split(«,») # lst — список lst # [‘Hello’, ‘ world’] |
4. Генераторы списков
- В python создать список можно также при помощи генераторов, — это довольно-таки новый метод:
- Первый простой способ.
| # список из 10 элементов, заполненный единицами l = [1]*10 # список l = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] |
- Второй способ сложнее.
l = [i for i in range(10)] # список l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] или такой пример: c = [c * 3 for c in 'list'] print (c) # ['lll', 'iii', 'sss', 'ttt'] Пример: Заполнить список квадратами чисел от 0 до 9, используя генератор списка. РЕШЕНИЕ: l = [i*i for i in range(10)] ну или: l = [(i+1)+i for i in range(10)] print(l) # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
- Случайные числа в списке:
| from random import randint l = [randint(10,80) for x in range(10)] # 10 чисел, сгенерированных случайным образом в диапазоне (10,80) |
ПРОСТЕЙШИЕ ОПЕРАЦИИ НАД СПИСКАМИ
- Списки можно складывать (конкатенировать) с помощью знака «+»:
| l = [1, 3] + [4, 23] + [5] # Результат: # l = [1, 3, 4, 23, 5] |
[33, -12, ‘may’] + [21, 48.5, 33] # [33, -12, ‘may’, 21, 48.5, 33]
или так
| a=[33, -12, ‘may’] b=[21, 48.5, 33] print(a+b) # [33, -12, ‘may’, 21, 48.5, 33] |
- Операция повторения:
[[0,0],[0,1],[1,1]] * 2 # [[0, 0], [0, 1], [1, 1], [0, 0], [0, 1], [1, 1]]
Как узнать длину списка?
В питоне не нужно явно указывать размер списка или вручную выделять на него память. Длину списка можно узнать с помощью встроенной функции len:
| names = [‘Ivan’, ‘Marie’, ‘Peter’, ‘Max’] print (len(names)) # 4 |
Ввод списка (массива) в языке Питон
- Простой вариант ввода списка и его вывода:
| L=[] L = [ int(input()) for i in range(5) ] # при вводе 1 2 3 4 5 print (L) # вывод: 1 2 3 4 5 |
Функция int здесь используется для того, чтобы строка, введенная пользователем, преобразовывалась в целые числа.
- Как уже рассмотрено выше, список можно выводить целым и поэлементно:
| # вывод целого списка (массива) print (L) # поэлементный вывод списка (массива) for i in range(5): print ( L[i], end = » » ) |
Задание Python 4_7:
Необходимо задать список (массив) из шести элементов; заполнить его вводимыми значениями и вывести элементы на экран. Использовать два цикла: первый — для ввода элементов, второй — для вывода.
Замечание: Для вывода через «,» используйте следующий синтаксис:
| print ( L[i], end = «, » ) |
Пример результата:
введите элементы массива: 3.0 0.8 0.56 4.3 23.8 0.7 Массив = 3, 0.8, 0.56, 4.3, 23.8, 0.7
Задание Python 4_8:
Заполните список случайными числами в диапазоне 20..100 и подсчитайте отдельно число чётных и нечётных элементов. Использовать цикл.
Замечание: работа со случайными числами.Задание Python 4_9: Найдите минимальный элемент списка. Выведите элемент и его индекс. Список из 10 элементов инициализируйте случайными числами. Для перебора элементов списка использовать цикл.
Пример результата:
| 9 5 4 22 23 7 3 16 16 8 Минимальный элемент списка L[7]=3 |
Часть II: Другие операции над списками при помощи функций
| a=[1,7,3,88,33 ] a.sort() #[1,3,7,33,88] — сортировка a.reverse() #[88,33,7,3,1] — обратная сортировка a.index(7) #2 — индекс элемента a.clear() # — очистка списка len(a) # — длина списка sum(a) # — суммирование элементов |
- Функция join() — соединение элементов через определенный символ:
lst=['11','22','33'] lst="-".join(lst)# '11-22-33'
- Функция split([sep]) — возвращает список подстрок, получающихся разбиением строки a разделителем sep:
str="1-2-3-4"
s1=str.split("-") # ['1','2','3','4']
- минимальный и максимальный элементы списка;
- сумму и среднее арифметическое;
- второй минимальный элемент (второй по минимальности).
- Начало программы:
lst=[4,5,2,3,4]
- Добавление элемента,
append():
>>> a=[]
>>> a.append('444')
>>> a
['444']
- Добавление элемента,
extend():
names = ['Ivan', 'Marie', 'Peter', 'Max'] names.extend(['Kat', 'Mike']) print(names) #['Ivan', 'Marie', 'Peter', 'Max', 'Kat', 'Mike'] names += ['Nick'] print(names) #['Ivan', 'Marie', 'Peter', 'Max', 'Kat', 'Mike', 'Nick']
- Удаление элемента,
remove():
> a.remove('444')
>>> a
[]
- Удаление элемента по индексу,
del:
>>> del a[0] >>> a [] При копировании списков, т.е. присваивании одного списка другому, изменение первого списка влечет за собой изменение второго списка. Так как эти объекты связаны одной областью памяти (ссылка на список). mas1 =[1, 2, 3] mas2 = mas1 # создается ссылка на список mas1[0] = 4 print(mas2) #[4, 2, 3] Чтобы создать не ссылку на список, а копию списка можно использовать либо срез либо функцию copy. 1! mas2 = mas1[:] # используем срез 2! import copy mas1 =[1,2,3] mas2 = copy.copy(mas1)
- Пример палиндрома: казак, ABBA
- Использовать функции.
- Поскольку при присваивании одного списка другому, изменение первого ведет к аналогичному изменению второго списка, то необходимо использовать копию (
copy).- Начало программы:
import copy
stroka=input('введите слово')
lst=list (stroka) # конвертируем строку в список
Ключевое слово «in»
Проверить, содержит ли список некоторый объект, можно с помощью ключевого слова «in«:
names = ['Ivan', 'Marie', 'Peter', 'Inna']
print('Marie' in names) # true
ГЕНЕРАЦИЯ СЛУЧАЙНЫХ ЧИСЕЛ ПРИ РАБОТЕ СО СПИСКАМИ
Вспомним, как работать с модулем random.
Встроенный модуль Питона random позволяет генерировать псевдослучайные числа.
Модуль random включает в себя функцию random, которая возвращает действительное число в диапазоне от 0.0 до 1.0. Каждый раз при вызове функции возвращается число из длинного ряда.
пример:
import random
for i in range(10):
x = random.random()
print (x) # 0.5185207383774904 0.78283351055836 0.23601341583293534 ...
Для того, чтобы получить псевдослучайное целое число:
| import random random.randint(<начало>,<конец>) |
Для того, чтобы получить псевдослучайное вещественное число:
| import random random.uniform(<начало>,<конец>) |
ЦИКЛ FOR ПРИ РАБОТЕ СО СПИСКАМИ
| mylist=[1,2,3,4,5] for item in mylist: item = 0 # mylist не меняется! print(mylist) # [1, 2, 3, 4, 5] n=5 for i in range(n): mylist[i] = 0 # mylist меняется print(mylist) # [0, 0, 0, 0, 0] |