Программирование Python по моим конспектам. Лекция 28
Пост можно топить, минусить и всячески убивать, ибо в горячем он нахер не нужен, а вот подписчикам пригодится.
Для тех кто не в теме, тут я перевожу свои лекции по питону с языка немецкого на язык человеческий, поэтому- если что- я не виноват. Эти лекции созданы не для того, чтобы сделать из человека говнокодера, а для того, чтобы помочь в сложных темах, которые некому объяснить, а книга по программированию не может с этим помочь. Если вы никогда не были в такой ситуации- значит вы вундеркинд и я хочу от вас детей.
Отвечая на 90% одинаковых вопросов-
Я знаю, что это есть в каждой книге по питону. Это логично. Не логично было бы, если бы это было в книге по анатомии хомяков.
Я это делаю, потому что мне это нравится.
Привет, друзья.
Я отдал свою кандидатскую на проверку, и в ожидании результатов, буду куярить свои говнопосты немного чаще.
Итак, сегодня мы немного расслабим мозги, и будем усовершенствовать то, что мы уже проходили. Я делаю это для того, чтобы пройденные темы постоянно оставались свежими у вас в памяти.
В следующих лекциях мы поговорим с вами о последовательностях и генераторах.
Начнем с последовательностей, как мы помним это объекты, которые состоят из последовательностей других объектов. К ним относятся Списки, кортежи и строки.
Последовательности отличаются от других объектов ( к примеру чисел) тем, что они, к примеру, имеют длину, элементы находятся в определенном порядке и имеют свой номер(индекс). Исходя из этого в питоне существует ряд операторов, которые помогут нам работать с последовательностями.
оператор in
x in str- Возвращает 1, когда элемент со значением x присутствует в последовательности str
x not in str Возвращает 0, когда элемент со значением x присутствует в последовательности str
str*n- создание n копий последовательности str
str[i:j] так зыванный slice, или отрезок последовательности от элемента i до элемента j (не включительно)
Можно, также, не указывать первый или последний элимент слайса, в таком случае интерпритатор будет выводить нам элименты с самого начала (если мы напишем так str[:n])
или до конца, если мы напишем так str[n:]
Пример ниже.
Тут все просто, объяснений, надеюсь не требуется. Угадайте, что же будет при print (str[:])
Правильно, будет выведена целая последовательность на наш экран.
Иногда возникают ситуации, когда индекс нашей последовательности имеет отрицательное значение, что же тогда?
А ничего страшного. Просто мы "приходимся" по последовательности задом на перед.
Если вы знаете длину строки, то есть еще такая штука, которую мы можем провернуть с последовательностями, как распаковка значений. Это значит, в одном присвоении мы каждой переменной даем ссылку на определенный элимент последовательности. Звучит сложно, а на практике все просто
Вот как мы можем использовать этот прием на практике
А сейчас мы посмотрим на финт ушами, или более продвинутую распаковку
Ну как вам? а стало указывать на нулевой элемент, а end стал у нас списком, который включает в себя все элементы после нулевого.
а еще так можно
Мы взяли первый элемент, который укажет на нулевой индекс, затем середину, и последний элемент, который укажет на 5 индекс.
На сегодня хватит. Пойду спать.
Есть полупустое сообщество http://pikabu.ru/community/python -- не хотите там публиковаться?
Тем более, что ваши посты даже по тэгам фиг найдешь -- результаты по "питон" пополам со змеями получаются. К тому же, некоторые утверждают, что правильнее -- "пайтон".
А арбузы это плоды, которые состоят из арбузов :)
Длина - это не обязательный атрибут, последовательность вполне себе может быть бесконечной.
Называть список str (что напомню в добавок является встроенным типом) - это извращение.
У среза есть 3-й аргумент - step (шаг).
И да, он тоже может быть отрицательным, что означает брать элементы в обратном порядке
Ну и основное применение list[:] в том, что возвращается копия списка (для строк и кортежей действие бессмысленное, т.к. они всё равно неизменяемые). И если менять копию, с оригинальным списком ничего не случится.
Из шапки понял, что Вы сам ЯП программируете, а не используя ЯП.