Всем привет в новой части гайда для новичков о ЯП Python.
Предыдущие части:
Сегодня планирую вам рассказать о Списках.
Списки в Python-е упорядоченные, изменяемые коллекции объектов.Могут содержать как и числовые значения, так и строчные, так же списки могут содержать списки =) или же не содержать ничего.
Значения в списке могут повторяться ! тоесть список может выглядеть как [1,1,1,1,1,1,1,1,1,1,1]
Предыдущие части:
Сегодня планирую вам рассказать о Списках.
Списки в Python-е упорядоченные, изменяемые коллекции объектов.Могут содержать как и числовые значения, так и строчные, так же списки могут содержать списки =) или же не содержать ничего.
Значения в списке могут повторяться ! тоесть список может выглядеть как [1,1,1,1,1,1,1,1,1,1,1]
1)Любой итерируемый обьект может быть обращен в список функцией list .
Пример:
2) Можно создать при помощи квадратных скобок:
3)Генератор списков
Кто не сталкивался с такой конструкцией-тут все просто
(переменная или выражение) (цикл)
Посложнее пример
Пример:
Код:
>>>list('codeby')
['c','o','d','e','b','y']
Код:
>>>s=[]
>>>s=[0,'0',[0,1,1,1,'ale'],'ky']
Код:
>>>c = [c * 3 for c in 'codeby']
['ccc','ooo','ddd','eee','bbb','yyy']
(переменная или выражение) (цикл)
Код:
>>>qwe=[a for a in range(1,5)]
aaaaa
Код:
>>>qwe = [c * 3 for c in 'codeby' if c != 'y']
['ccc','ooo','ddd','eee','bbb']
list.append(x)-----------Добавляет элемент в конец списка
list.extend(L)-----------Расширяет список list, добавляя в конец все элементы списка L
list.insert(i, x)-----------Вставляет на i-ый элемент значение x
list.remove(x)----------Удаляет первый элемент в списке, имеющий значение x. ValueError, если такого элемента не существует
list.pop()---------Удаляет i-ый элемент и возвращает его. Если индекс не указан, удаляется последний элемент
list.index(x, [start [, end]])----------Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end)
list.count(x)--------Возвращает количество элементов со значением x
list.sort([key=функция])----Сортирует список на основе функции
list.reverse()------Разворачивает список
list.copy()------Поверхностная копия списка
list.clear()-------Очищает список
Использовать их надо так:
list.extend(L)-----------Расширяет список list, добавляя в конец все элементы списка L
list.insert(i, x)-----------Вставляет на i-ый элемент значение x
list.remove(x)----------Удаляет первый элемент в списке, имеющий значение x. ValueError, если такого элемента не существует
list.pop()---------Удаляет i-ый элемент и возвращает его. Если индекс не указан, удаляется последний элемент
list.index(x, [start [, end]])----------Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end)
list.count(x)--------Возвращает количество элементов со значением x
list.sort([key=функция])----Сортирует список на основе функции
list.reverse()------Разворачивает список
list.copy()------Поверхностная копия списка
list.clear()-------Очищает список
Использовать их надо так:
Код:
>>> l = [1, 8, 12, 5, 7]
>>> l.sort()
>>> print(l)
[1,5,7,8,12]
Индексы
Как и в других языках программирования в Python существует индексация.
Как обычно нумерация элементов списков начинается с нулевого индекса
При попытке доступа к несуществующему индексу возникает исключение IndexError.
В Python также поддерживаются отрицательные индексы, при этом нумерация идёт с конца, например:
Cрезы
В Python, кроме индексов, существуют ещё и срезы.
item[START:STOP:STEP] - берёт срез от номера START, до STOP (не включая его), с шагом STEP. По умолчанию START = 0, STOP = длине объекта, STEP = 1. Соответственно, какие-нибудь (а возможно, и все) параметры могут быть опущены.
START:STOP:STEP так-же могут принимать отрицательные значения.
Как и в других языках программирования в Python существует индексация.
Код:
>>>a=[1,2,3,4,5,6,7,8]
>>>a[0]
1
>>>a[1]
2
Как обычно нумерация элементов списков начинается с нулевого индекса
При попытке доступа к несуществующему индексу возникает исключение IndexError.
В Python также поддерживаются отрицательные индексы, при этом нумерация идёт с конца, например:
Код:
>>>a = [1, 3, 8, 7]
>>>a[-1]
7
>>>a[-4]
1
В Python, кроме индексов, существуют ещё и срезы.
item[START:STOP:STEP] - берёт срез от номера START, до STOP (не включая его), с шагом STEP. По умолчанию START = 0, STOP = длине объекта, STEP = 1. Соответственно, какие-нибудь (а возможно, и все) параметры могут быть опущены.
Код:
>>>a = [1, 3, 8, 7]
>>>a[:]
[1, 3, 8, 7]
>>>a[1:]
[3, 8, 7]
>>>a[:3]
[1, 3, 8]
>>>a[::2]
-[1, 8]
Пройти по массиву достаточно просто
Пример
Второй пример
Выбрать элемент списка вложенного в первый
Тоесть что бы обратиться к вложенному массиву, надо обратиться сначала к нему по индексу в первом массиве.
Пример
Код:
>>>a=[5,6,7,1,2,3,[213123],'kot']
>>>for i in a:
>>> print('i')
5
6
7
1
2
3
[213123]
'kot'
Код:
>>>a=[1,2,5,6,7,'1sdasd']
>>>for i in range(0,len(a)):
>>> print a[i]
1
2
5
6
7
'1sdasd
Выбрать элемент списка вложенного в первый
Код:
>>>a=[1,2,3,4,5,[lopata],5,5]
>>>print(a[5])
[lopata]
>>>print(a[5][2])
p
1) Создать матрицу 5x5
Вывести на экран в формате
2)Вывести на экран "это"
3)Создать список из текста(каждая новая буква-каждый новый элемент списка)
4) Вывести любой массив , длинны не меньше 10 символов, в обратной последовательности.
5)Посчитать сумму всех чисел в списке от 1 до 100 которые делятся на 3 без остатка.(подумайте как это можно сделать наиболее эффективно)
6)Посложнее:
Создаем массив с 1000 элементами, значения которых генерируется рандомно в диапазоне 1..5.
И в нем надо массиве найти максимальное количество подряд идущих одинаковых элементов и вывести это на экран.
7)Посложнее:
Есть массив состоящий из 20 элементов(создайте сами) в нем поменяйте местами элементы равноудаленные от центра и выведете это на экран.
Пример: ввод(0,1,2,3,4,5,6,7) вывод(0,7,1,6,2,5,3,4)
8)Сложнааа
В таблице 20×20 (внизу) четыре числа на одной диагонали выделены красным.
08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48
Произведение этих чисел 26 × 63 × 78 × 14 = 1788696.
Каково наибольшее произведение четырёх подряд идущих чисел в таблице 20×20 , расположенных в любом направлении (вверх, вниз, вправо, влево или по диагонали)?
( c любыми значениями которые вы захотите)[0, 3, 1, 3, 5] [5, 8, 8, 0, 5] [8, 9, 8, 5, 2] [7, 7, 3, 9, 9] [0, 1, 1, 3, 8]
Вывести на экран в формате
Код:
[0, 3, 1, 3, 5]
[5, 8, 8, 0, 5]
[8, 9, 8, 5, 2]
[7, 7, 3, 9, 9]
[0, 1, 1, 3, 8]
Код:
########
#######
######
#####
####
###
##
#
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
5)Посчитать сумму всех чисел в списке от 1 до 100 которые делятся на 3 без остатка.(подумайте как это можно сделать наиболее эффективно)
6)Посложнее:
Создаем массив с 1000 элементами, значения которых генерируется рандомно в диапазоне 1..5.
И в нем надо массиве найти максимальное количество подряд идущих одинаковых элементов и вывести это на экран.
7)Посложнее:
Есть массив состоящий из 20 элементов(создайте сами) в нем поменяйте местами элементы равноудаленные от центра и выведете это на экран.
Пример: ввод(0,1,2,3,4,5,6,7) вывод(0,7,1,6,2,5,3,4)
8)Сложнааа
В таблице 20×20 (внизу) четыре числа на одной диагонали выделены красным.
08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48
Произведение этих чисел 26 × 63 × 78 × 14 = 1788696.
Каково наибольшее произведение четырёх подряд идущих чисел в таблице 20×20 , расположенных в любом направлении (вверх, вниз, вправо, влево или по диагонали)?