• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Статья Учим Python. Часть ?? (Списки)

Всем привет в новой части гайда для новичков о ЯП Python.
about-03.jpg

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

Списки в Python-е упорядоченные, изменяемые коллекции объектов.Могут содержать как и числовые значения, так и строчные, так же списки могут содержать списки =) или же не содержать ничего.
Значения в списке могут повторяться ! тоесть список может выглядеть как [1,1,1,1,1,1,1,1,1,1,1]
1)Любой итерируемый обьект может быть обращен в список функцией list .
Пример:
Код:
>>>list('codeby')
['c','o','d','e','b','y']
2) Можно создать при помощи квадратных скобок:
Код:
>>>s=[]
>>>s=[0,'0',[0,1,1,1,'ale'],'ky']
3)Генератор списков
Код:
>>>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()-------Очищает список

Использовать их надо так:
Код:
>>> l = [1, 8, 12, 5, 7]
>>> l.sort()
>>> print(l)
[1,5,7,8,12]

Индексы
Как и в других языках программирования в 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
Cрезы
В 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]
START:STOP:STEP так-же могут принимать отрицательные значения.
Пройти по массиву достаточно просто
Пример
Код:
>>>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
[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]
( 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]
2)Вывести на экран "это"
Код:
########
#######
######
#####
####
###
##
#
3)Создать список из текста(каждая новая буква-каждый новый элемент списка)
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!
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 , расположенных в любом направлении (вверх, вниз, вправо, влево или по диагонали)?
 

vag4b0nd

Green Team
24.05.2017
303
1 473
BIT
32
Отлично. Спасибо за помощь)
Уже скоро снова упомяну эти темы. Но думаю для совсем не знающих, чтоб прям разжевать так разжевать.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!