Программирование Python по моим конспектам. Лекция 28

Пост можно топить, минусить и всячески убивать, ибо в горячем он нахер не нужен, а вот подписчикам пригодится.


Для тех кто не в теме, тут я перевожу свои лекции по питону с языка немецкого на язык человеческий, поэтому- если что- я не виноват. Эти лекции созданы не для того, чтобы сделать из человека говнокодера, а для того, чтобы помочь в сложных темах, которые некому объяснить, а книга по программированию не может с этим помочь. Если вы никогда не были в такой ситуации- значит вы вундеркинд и я хочу от вас детей.


Отвечая на 90% одинаковых вопросов-


Я знаю, что это есть в каждой книге по питону. Это логично. Не логично было бы, если бы это было в книге по анатомии хомяков.



Я это делаю, потому что мне это нравится.



Привет, друзья.

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



Итак, сегодня мы немного расслабим мозги, и будем усовершенствовать то, что мы уже проходили. Я делаю это для того, чтобы пройденные темы постоянно оставались свежими у вас в памяти.

В следующих лекциях мы поговорим с вами о последовательностях и генераторах.

Начнем с последовательностей, как мы помним это объекты, которые состоят из последовательностей других объектов. К ним относятся Списки, кортежи и строки.

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


оператор  in


x in str-  Возвращает 1, когда элемент со значением x присутствует в последовательности str

Программирование Python по моим конспектам. Лекция 28 Программирование, Питон, Лекция, Длиннопост

x not in str Возвращает 0, когда элемент со значением x присутствует в последовательности str


str*n- создание n копий последовательности str

Программирование Python по моим конспектам. Лекция 28 Программирование, Питон, Лекция, Длиннопост
Программирование Python по моим конспектам. Лекция 28 Программирование, Питон, Лекция, Длиннопост

str[i:j] так зыванный slice, или отрезок последовательности от элемента i до элемента j (не включительно)

Программирование Python по моим конспектам. Лекция 28 Программирование, Питон, Лекция, Длиннопост
Программирование Python по моим конспектам. Лекция 28 Программирование, Питон, Лекция, Длиннопост

Можно, также, не указывать первый или последний элимент слайса, в таком случае интерпритатор будет выводить нам элименты с самого начала (если мы напишем так str[:n])

или до конца, если мы напишем так str[n:]

Пример ниже.

Программирование Python по моим конспектам. Лекция 28 Программирование, Питон, Лекция, Длиннопост
Программирование Python по моим конспектам. Лекция 28 Программирование, Питон, Лекция, Длиннопост

Тут все просто, объяснений, надеюсь не требуется. Угадайте, что же будет при print (str[:])

Правильно, будет выведена целая последовательность на наш экран.


Иногда возникают ситуации, когда индекс нашей последовательности имеет отрицательное значение, что же тогда?

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

Программирование Python по моим конспектам. Лекция 28 Программирование, Питон, Лекция, Длиннопост
Программирование Python по моим конспектам. Лекция 28 Программирование, Питон, Лекция, Длиннопост

Если вы знаете длину строки, то есть еще такая штука, которую мы можем провернуть с последовательностями, как распаковка значений. Это значит, в одном присвоении мы каждой переменной даем ссылку на определенный элимент последовательности. Звучит сложно, а на практике все просто

Программирование Python по моим конспектам. Лекция 28 Программирование, Питон, Лекция, Длиннопост

Вот как мы можем использовать этот прием на практике

Программирование Python по моим конспектам. Лекция 28 Программирование, Питон, Лекция, Длиннопост
Программирование Python по моим конспектам. Лекция 28 Программирование, Питон, Лекция, Длиннопост

А сейчас мы посмотрим на финт ушами, или более продвинутую распаковку

Программирование Python по моим конспектам. Лекция 28 Программирование, Питон, Лекция, Длиннопост
Программирование Python по моим конспектам. Лекция 28 Программирование, Питон, Лекция, Длиннопост

Ну как вам? а стало указывать на нулевой элемент, а  end стал у нас списком, который включает в себя все элементы после нулевого.


а еще так можно

Программирование Python по моим конспектам. Лекция 28 Программирование, Питон, Лекция, Длиннопост
Программирование Python по моим конспектам. Лекция 28 Программирование, Питон, Лекция, Длиннопост

Мы взяли первый элемент, который укажет на нулевой индекс, затем середину, и последний элемент, который укажет на 5 индекс.


На сегодня хватит. Пойду спать.

1
Автор поста оценил этот комментарий

Есть полупустое сообщество http://pikabu.ru/community/python -- не хотите там публиковаться?


Тем более, что ваши посты даже по тэгам фиг найдешь -- результаты по "питон" пополам со змеями получаются. К тому же, некоторые утверждают, что правильнее -- "пайтон".

раскрыть ветку
Автор поста оценил этот комментарий
Начнем с последовательностей, как мы помним это объекты, которые состоят из последовательностей других объектов.

А арбузы это плоды, которые состоят из арбузов :)


Длина - это не обязательный атрибут, последовательность вполне себе может быть бесконечной.


Называть список str (что напомню в добавок является встроенным типом) - это извращение.


У среза есть 3-й аргумент - step (шаг).

>>> list(range(10))[1::2]
[1, 3, 5, 7, 9]

И да, он тоже может быть отрицательным, что означает брать элементы в обратном порядке

>>> list(range(10))[10::-2]
[9, 7, 5, 3, 1]

Ну и основное применение list[:] в том, что возвращается копия списка (для строк и кортежей действие бессмысленное, т.к. они всё равно неизменяемые). И если менять копию, с оригинальным списком ничего не случится.

раскрыть ветку
1
Автор поста оценил этот комментарий

Из шапки понял, что Вы сам ЯП программируете, а не используя ЯП.

раскрыть ветку