30

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

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


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

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

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

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


Привет товарищи, сегодня переживаем маленький юбилей. Тридцатая лекция. Думал, что меня не хватит так на долго.

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

Вроде как мы уже умеем делать кучу всяких интересных штук со списками, однако, это еще не все финты ушами, которые мы сможем сделать с ними. Впрочем, я все и не знаю)

Давайте мы еще раз и подробнее рассмотрим создание списка.  Обратите ваши взоры на муть ниже, но особо не заморачивайтесь. В процессе примеров я все объясняю. Данное есть ни что иное, как выписка из документации, которая показывает нам возможные пути создания списка.

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

Начнем с первого, который нам уже известен, но повторение -мать учения.

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

То, что выше мы уже делали много раз, и в объяснении не нуждается. Элементы обозначаются в квадратных скобках. Они могут быть просто перечислены, как в строке 1, или быть в форме выражений как в строке 3.

Элементами могут быть и другие списки, как в строке 2.


Переходим к следующему примеру. Списки можно генерировать абстрактным медом. Так же как в математике мы определяем множества. Иначе говоря, мы пишем в скобках конструкцию, согласно правилам на первой картинке (вторая строка).

Проще говоря, выглядит она так

lists=[выражение for элемент in новый список]

Итак, что мы делаем. Грубо говоря, мы используем элементы одного списка, для создания другого с помощью фор-цикла. Рассмотрим подробнее наш фор-цикл, который мы уже проходили. Мы хотим вывести на экран все элементы списка

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

А как же нам запихнуть эти значения в новый список?

Можно, конечно, так как мы раньше делали.

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

А можно и по "модному".

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

Итак, открываем квадратную скобку и пишем выражение, у нас оно сейчас представляет собой i**2. Далее все выглядит как самый обычный фор-цикл, который мы уже прошли выше.

Перебирается каждый элемент строки от 0 до 5 и возводится в квадрат.

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


Можно еще и так делать

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

Переходим к третьей строке первой картинки. Переводя это дело на человеческий язык, выглядит она так

s=[выражение for элемент in другой список if условие]

Очень этот список похож на предыдущий, однако мы добавили условие. Давайте испытаем на практике. Мы, к  примеру, хотим получить элементы одного списка, которые делятся на 5 в другом списке.

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

Смотрим теперь на строку 4 первой картинки. Она позволяет нам из двух списков находить общие элементы и добавлять их в третий список

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

На этом на сегодня все.



На следующей лекции мы рассморим новые методы для работы со списками.


del s[i] удаляем элемент с индексом i, длина списка уменьшается


del s[j:i] удаляем элементы с индексами от i до j


s.extend(t) список s дополняется элементами последовательности t


s.index(x) будет возвращен наименьший индекс i когда s[i]==x


s.pop() возвращает последний элемент списка, причем он из списка удаляется


s.remove(x) удаляется первый элемент списка со значением x


s.reverse() порядок элементов сортируется "наоборот"- например было [1,2] стало [2,1]

Вы смотрите срез комментариев. Показать все
0
DELETED
Автор поста оценил этот комментарий

Зачем подобного рода посты на пикабу? Есть же хабрхабр

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

Во всех его примерах не соблюдается pep8, его бы распяли просто ещё на входе. Любой питонщик плюнет в него ядовитой слюной.

раскрыть ветку (8)
1
DELETED
Автор поста оценил этот комментарий
Собственно за что я и люблю хабр, хуйню там быстро минусуют
0
Автор поста оценил этот комментарий

Поэтому я и не питонщик)

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

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

Зачем???
Ты не питонщик, языка ты не знаешь, стандартов не знаешь, на кой хер ты прешься в учителя?

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

я повторяю уже куй знает какой раз. Я никого не учу. Я тупо перевожу. Поэтому там и написано не "уроки по питону", а "мои лекции по питону". Я еще на первых лекциях говорил, что я не питонщик. Это всех устроило.  

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

Дело даже не столько в стандартах PEP8, сколько в довольно спорных решениях. Как например использование списков вместо кортежей в качестве временно существующего итерируемого объекта в циклах for. Так же в лекции совершенно не оговаривается с какой версией ведется работа. А для list comprehension это имеет довольно существенное значение, поскольку в версии 2.7 и ниже переменная цикла будет переопределять глобальную переменную. В самом начале в списке (1) используется ссылка на другой список (2), и нигде нет объяснения о том что при его изменении (2) будет изменятся и общий список (1). Если уж переводить лекции то лекции должны быть хорошими.

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

Да блин! Твои лекции или переводы или что там у тебя некорректны. Я тебе русским языком объяснил почему, Найдутся же люди, которые начитаются твоих переводов и будут думать, что знают язык. Просто занимайся своим делом, твои потуги переводчика только вредят.

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

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

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

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

Да согласен я. Но сам пойми, не просто перевести лекцию, да еще и понятным языком. Мне приходится жертвовать чем то.

Если я буду проверять пробелы и отступы- мои выходные накроются. А плагин- хороший совет. Спасибо

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку