Отличный материал для новичков. Считаю одним из лучших в рускоязычном ютубе. Просматриваю по несколько раз. Чувствуется огромный опыт программирования автора за плечами.
Недавно начал изучать Python. Просмотрел немалое количество видеоуроков на других каналах и понял на сколько прав был Сократ. Я знаю, что ничего не знаю! Спасибо за доходчивые и понятные уроки!
На 7:33 неточность. Если нужно до конца списка пробежать, то срез должен быть l[::2], такой как на видео откинет последний элемент для нечётного количества элементов списка.
Не работает dir(s), ни чего не выводит на экран, только позже я сделал так print(dir(s)) и все появилось. Олег спасибо самое лучшее видео про питон у вас. Подписка и лайк.
Олег, приветствую👋 попробовал поставить для сортировки не год, как в примере, а случайные числа "_5", *_55, "_2010" и тд. В результате сортировки получается, что сортировка все-таки не по числам, а по первому символу... Так как 5-ки у меня в конце списка, хотя 5 и 55 меньше 2010🤔🤝
Олег, огромное вам спасибо! Разложили многое по полочкам в моей голове. Я уже давно пытаюсь как следует погрузиться в мир Python, да все как-то не получалось (хотя уже и один проект успел сделать на Django REST, вот такой вот порадокс), а с вашими курсами продвижение пошло намного быстрее, уже начал и вспомогательные небольшие скриптики писать на нем. Можно сказать наконец-то удалось проникнуться этим языком программирования. :)
Хотел уточнить один момент, если я все верно понимаю, сортировка проводится по каждому отдельному символу (н-р: сортировка f_19 d_120 и a_112 по возрастанию вопреки ожиданиям на выходе выдаст следующий порядок a_112, d_120 и f_19)? Вопрос в том, как это пофиксить?) спустя время дошло : list_1 = ['a_10', 'b_14', 'c_80', 'd_120', 'e_53', 'f_96', ' g_127', 'h_78'] def by_number(name): return int(name.split('_')[-1]) sbn_list1 = sorted(list_1, key=by_number) print(sbn_list1) В результате вроде как корректно сортирует
Добрый день. На самом деле все тоже самое. Просто нужно остановится на 3 минуты и подумать, как это делается и прокручивается в циклах. Поскольку все тоже самое, то ответы на ваши вопросы лежат на поверхности.
Олег, не подскажете куда копать, если нужно в двух огромных списках, назовем их А и В (оба содержат полные пути до файлов) найти дубликаты файлов (по имени, без учета пути) и удалить их из списка А. Что я делаю: split('/')[-1] и сравниваю каждый элемент, но чтобы обойти такие списки нужно очень много времени. Еще пробовал вычитать список из списка, но не понимаю как потом вернуть путь. Заранее спасибо
@@zaemiel нет списки уже готовы. Нужно только сравнить все элементы списков по последнему split('/')[-1]. Давайте я попробую объяснить: А=['c:/program/1.exe'] В=['d:/videos/1.exe', 'c:/pictures/222.exe'] мне нужно, сравнить эти списки, и удалить из списка В элемент 'd:/videos/1.exe' , так как файл 1.exe есть в списке А.
@@zaemiel Извините, что с разных акков. Ну программы всякие поисковые они ж побыстрее находят. Мое решение тупо перебор и сравнение for i in A: for z in B:
Спасибо за уроки, с удовольствием смотрю) А как sorted понимает, что после сравнения по ключу из функции (by_year), где на выходе получаются только цифры, нужно обратно все склеить, а не выдать ['2000', '2010', '2011'] ? Единственное, что пришло в голову: функция для него как какой-то прибор (отдает по одному элементы из списка не заморачиваясь, на выходе получает значение - число, и расставляет элементы по возрастанию в соответствии с полученным значением.
исходные строки не меняются. Строки вообще не меняются. Каждый раз, когда делается split строки, создается объект списка, от которого берется один элемент. На исходную строку - это совершенно не влияет.
Списки, в отличие от тех же строк, изменяемые объекты, т.е. в список можно добавлять и удалять элементы, не создавая при этом новый список, а изменяя сам имеющийся список. Переменные l и new - обе ссылаются на одни и тот же объект. Как два ярлыка наклееных на одну коробку. Метод изменяет сам объект. Пусть список будет коробкой в которой лежат элементы списка. На коробке есть две этикетки - переменные l и new. Вы кладете в коробку новый предмет - метод .append(). В коробке теперь на одни элемент больше. Но обе этикетки как висели на ней, так и продолжают висеть - т.е. обе переменные как ссылались на один и тот же список, так и продолжают на него ссылаться, а элементов теперь в списке больше. Вот и получается, что теперь обе переменные возвращают увеличеный список. Поэтому в уроке и заострили внимание на том, что списки изменяемые, и что об этом нужно помнить, т.к., в зависимости от того результата, который нужен, придется выбирать между использванием какого-либо метода, изменяющего сам объект, или использованием функции, которая создаст и вернет новый объект. Как например выбор между методом .sort() и функцией sorted().
Что-то я не догоняю.. 22:25 что пишу -1(вычитание от длины), что 1, результат одинаковый... ведь 1 это второй элемент будет ,так же цифра 2000 . .. тогда зачем лишний символ "-" писать с конца... и 24:00 name и name.split в коде функции мы же name не вводим как функция его возвращает(return)?...
Олег у меня тот же вопрос, что и у Денис Латыпов. Не совсем понятно как работает конструкция sorted(children, key=by_year) . Как в функцию by_year передается нужное имя? Спасибо
Мне кажется потому что функция by_year возвращает только года, следовательно когда ставишь ключ по функции то оно сортирует по тому что возвращает эта функция
Отличная подача материала. Остановлюсь на вашем курсе, т.к. вы объясняете подробно и доступно для понимания. Спасибо за труды. Желаю успехов.
Отличный материал для новичков. Считаю одним из лучших в рускоязычном ютубе. Просматриваю по несколько раз. Чувствуется огромный опыт программирования автора за плечами.
Согласен :)
Недавно начал изучать Python. Просмотрел немалое количество видеоуроков на других каналах и понял на сколько прав был Сократ. Я знаю, что ничего не знаю! Спасибо за доходчивые и понятные уроки!
Спасибо
Учу питон самостоятельно уже полгода, и только сейчас я понял как пользоваться сортировкой по ключу. Спасибо, Олег.
Очень нравится что мы переходить к задачам из реальной жизни и примеры. Спасибо
Очень хороший урок, хоть и длинноват. Узнал много нового про списки и строки
Странно, что есть дизлайки, конечно
На всех уроках
Очень необычные люди их ставят
А я, вот, лайк поставил)
На 7:33 неточность. Если нужно до конца списка пробежать, то срез должен быть l[::2], такой как на видео откинет последний элемент для нечётного количества элементов списка.
рили?
Не работает dir(s), ни чего не выводит на экран, только позже я сделал так print(dir(s)) и все появилось. Олег спасибо самое лучшее видео про питон у вас. Подписка и лайк.
Лучший!
Автору спасибо! Очень хорошо объясняете!
Олег, приветствую👋 попробовал поставить для сортировки не год, как в примере, а случайные числа "_5", *_55, "_2010" и тд. В результате сортировки получается, что сортировка все-таки не по числам, а по первому символу... Так как 5-ки у меня в конце списка, хотя 5 и 55 меньше 2010🤔🤝
Олег, огромное вам спасибо! Разложили многое по полочкам в моей голове. Я уже давно пытаюсь как следует погрузиться в мир Python, да все как-то не получалось (хотя уже и один проект успел сделать на Django REST, вот такой вот порадокс), а с вашими курсами продвижение пошло намного быстрее, уже начал и вспомогательные небольшие скриптики писать на нем. Можно сказать наконец-то удалось проникнуться этим языком программирования. :)
спасибо тебе!!!
Хотел уточнить один момент, если я все верно понимаю, сортировка проводится по каждому отдельному символу (н-р: сортировка f_19 d_120 и a_112 по возрастанию вопреки ожиданиям на выходе выдаст следующий порядок a_112, d_120 и f_19)? Вопрос в том, как это пофиксить?)
спустя время дошло :
list_1 = ['a_10', 'b_14', 'c_80', 'd_120', 'e_53', 'f_96', ' g_127', 'h_78']
def by_number(name):
return int(name.split('_')[-1])
sbn_list1 = sorted(list_1, key=by_number)
print(sbn_list1)
В результате вроде как корректно сортирует
Доброе время суток. Интересная и полезная информация о функции sorted по кеу. Было бы интересной информация о вложенных и многоуровневых списках.
Добрый день.
На самом деле все тоже самое. Просто нужно остановится на 3 минуты и подумать, как это делается и прокручивается в циклах. Поскольку все тоже самое, то ответы на ваши вопросы лежат на поверхности.
Олег, не подскажете куда копать, если нужно в двух огромных списках, назовем их А и В (оба содержат полные пути до файлов) найти дубликаты файлов (по имени, без учета пути) и удалить их из списка А. Что я делаю: split('/')[-1] и сравниваю каждый элемент, но чтобы обойти такие списки нужно очень много времени. Еще пробовал вычитать список из списка, но не понимаю как потом вернуть путь. Заранее спасибо
Если вы сперва ищите все файлы и берете их пути, то ускорить это вряд ли получится. Потому что здесь самое слабое звено - это чтение с диска.
@@zaemiel нет списки уже готовы. Нужно только сравнить все элементы списков по последнему split('/')[-1]. Давайте я попробую объяснить:
А=['c:/program/1.exe']
В=['d:/videos/1.exe', 'c:/pictures/222.exe']
мне нужно, сравнить эти списки, и удалить из списка В элемент 'd:/videos/1.exe' , так как файл 1.exe есть в списке А.
ну, ок... а как вы это решили для себя, что оно медленно работает?
@@zaemiel Извините, что с разных акков. Ну программы всякие поисковые они ж побыстрее находят. Мое решение тупо перебор и сравнение
for i in A:
for z in B:
@@zaemiel блин,
for i in A:
if i.split('/')[-1] in B:
print(i)
а я зачем-то 2 раза 'for' делал для обоих списков и для А и для В. Извините, тупанул
Спасибо за уроки, с удовольствием смотрю)
А как sorted понимает, что после сравнения по ключу из функции (by_year), где на выходе получаются только цифры, нужно обратно все склеить, а не выдать ['2000', '2010', '2011'] ?
Единственное, что пришло в голову: функция для него как какой-то прибор (отдает по одному элементы из списка не заморачиваясь, на выходе получает значение - число, и расставляет элементы по возрастанию в соответствии с полученным значением.
исходные строки не меняются. Строки вообще не меняются.
Каждый раз, когда делается split строки, создается объект списка, от которого берется один элемент. На исходную строку - это совершенно не влияет.
🗽
Хоть и знаю python, но все равно узнаю новые детали
13:09 объясните, пожалуйста, почему мы метод применили только к списку new, а изменили и new, и l?
Списки, в отличие от тех же строк, изменяемые объекты, т.е. в список можно добавлять и удалять элементы, не создавая при этом новый список, а изменяя сам имеющийся список.
Переменные l и new - обе ссылаются на одни и тот же объект. Как два ярлыка наклееных на одну коробку. Метод изменяет сам объект.
Пусть список будет коробкой в которой лежат элементы списка. На коробке есть две этикетки - переменные l и new. Вы кладете в коробку новый предмет - метод .append(). В коробке теперь на одни элемент больше. Но обе этикетки как висели на ней, так и продолжают висеть - т.е. обе переменные как ссылались на один и тот же список, так и продолжают на него ссылаться, а элементов теперь в списке больше. Вот и получается, что теперь обе переменные возвращают увеличеный список.
Поэтому в уроке и заострили внимание на том, что списки изменяемые, и что об этом нужно помнить, т.к., в зависимости от того результата, который нужен, придется выбирать между использванием какого-либо метода, изменяющего сам объект, или использованием функции, которая создаст и вернет новый объект. Как например выбор между методом .sort() и функцией sorted().
Что-то я не догоняю.. 22:25 что пишу -1(вычитание от длины), что 1, результат одинаковый... ведь 1 это второй элемент будет ,так же цифра 2000 . .. тогда зачем лишний символ "-" писать с конца...
и 24:00 name и name.split в коде функции мы же name не вводим как функция его возвращает(return)?...
Не сказал про метод .copy
И числа из сплит возвращаются или строковые значения?
Олег, Вам не говорили, что Ваш голос, как у Адвоката Егорова? :)
Не понял , почему функция вызывается если мы не передали параметру функции ,,name'' , никакого аргумента . Таймлайн 24:19
в name передается список children, делает это sorted в 8 строчке
Лучший
что-то мне не понятно
может потому-что я 4день учу python ?????
rl[0] что сделало
По 9 яиц в коробке )))))))))))))))
Вы что не слышали про "девятки яиц"?
Олег у меня тот же вопрос, что и у Денис Латыпов. Не совсем понятно как работает конструкция sorted(children, key=by_year) . Как в функцию by_year передается нужное имя? Спасибо
Мне кажется потому что функция by_year возвращает только года, следовательно когда ставишь ключ по функции то оно сортирует по тому что возвращает эта функция
У меня одного заместь урока какой-то дядя 1 минуту про игру говорит