Linked List на Python (Связный Cписок на Python) 2021

Поделиться
HTML-код
  • Опубликовано: 27 сен 2024

Комментарии • 54

  • @ЮрийМицкевич-э8э
    @ЮрийМицкевич-э8э 2 года назад +4

    Благодарю за отличную лекцию. Твой материал по linkedList дал абсолютное его понимание. Все пересмотренное и прочитанное ранее такой ясности не дало. Успехов тебе. Ты большой молодец.

  • @daniillantsov2161
    @daniillantsov2161 Год назад +2

    Большое тебе спасибо, очень доступно и понятно объяснил данную тематику, плюсом хочу поблагодарить за демонстрацию такого типа создания односвязаного списка, у тебя получилось гораздо понятней чем у других.

  • @aboronilov
    @aboronilov 2 года назад +2

    Знаешь дружище я пересмотрел столько туториалов по связанному списку, но понял только твой. ты большой молодец. Спасибо

  • @Anshegar
    @Anshegar Год назад +1

    Отличный гайд, спасибо, дополнил собственный код парой очень удобных идей твоих.

  • @elenatalley7899
    @elenatalley7899 2 года назад

    Лучшее объяснение на youtube!!!! спасибо! подписка

  • @ildarEGE
    @ildarEGE 3 года назад +3

    Рома опять делает топчик

    • @Kirayia
      @Kirayia 3 года назад

      Солидарен.

  • @usernoname-wv6of
    @usernoname-wv6of Год назад

    Если апенд реализовывать, как в видео, получается перебор всего списка для добавления в конец. В таком случае сложность алгоритма линейная О(n), зависит от количества элементов списка. Для pushback и pushfront должна быть константная О(1). А вот инсерты не в пограничные позиции можно сделать только с перебором.
    Можно добавить помимо head еще и tail.
    Для первого элемента условие if head is none и if tail is none : head = current, tail = current.
    Для последующих элементов (если head != none): tail.next = current (делаем связь последнего элемента с новым), tail = current (переставляем указатель хвост на новый (последний) элемент). Если список двухсвязанный, то еще добавляется связь current.previous = tail до перестановки указателя хвоста на новый элемент

  • @arturartur4747
    @arturartur4747 2 года назад +1

    Очень хорошее и понятное объяснение!! красава

  • @pavelolifer9934
    @pavelolifer9934 Год назад

    @Роман Рахлин, спасибо за видео, для меня материал очень полезен,
    но в функции remove() ошибка - если в списке находится только 1 элемент и сделать удаление my_list.remove(0) - этот элемент в нем и останется.
    надо блок if, где проверка индекса на 0, вынести из цикла while и сделать проверку до цикла, иначе с одним эелементом цикл while никогда не выполнится, потому что next вернет None.

  • @volkovev
    @volkovev 2 года назад +1

    Спасибо, друг! Очень полезно было :)

  • @Sergey-cz7ym
    @Sergey-cz7ym 2 года назад

    Очень понятное объяснение Linked List.
    Если не ошибаюсь то LinkedList можно было бы развернуть в цикле длиной LinkedList.length каждый раз переставлять второй элемент в начало списка и после этого удалять второй элемент, используя уже написанные функции push_front и remove
    Например так (у меня методы класса названы чуть по другому):
    def reverse_me_2(self):
    i = 0
    while i < len(self) - 1:
    self.insert_first(self.value_at(i + 1))
    self.remove_node_at(i + 2)
    i += 1

  • @eluterracock
    @eluterracock Год назад +11

    Чел, спасибо тебе, начало было немного странное, потому что когда видишь лицо автора поначалу не понимаешь какой контент будет, а тут прям доходчиво и очень понятно что и куда, короче очень годно! Респект!

    • @АнтонПетров-ь8б
      @АнтонПетров-ь8б 10 месяцев назад

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

  • @anastasiagordievich4967
    @anastasiagordievich4967 2 года назад +1

    супер объяснение, спасибо!

  • @itladymk
    @itladymk Год назад

    Спасибо большое, все очень понятно объясняешь 🤍

  • @farhodismailov6357
    @farhodismailov6357 Год назад

    Супер, благодарю

  • @ЮрийКлименко-к3щ
    @ЮрийКлименко-к3щ 2 года назад +3

    зачем нужно было писать геттеры и сеттеры, если атрибуты публичные?

  • @varossimonyan
    @varossimonyan 2 года назад

    Спасибо за видос, бро!)

  • @igortheoverlord4960
    @igortheoverlord4960 2 года назад

    Спасибо, классное видео, надеюсь будет еще!)

  • @DuhaxD
    @DuhaxD 2 года назад

    Приветствую! Хорошее видео, однако хотелось бы посмотреть на то как отсортировать связный список.

  • @МаралМаксутова-к5б
    @МаралМаксутова-к5б 2 года назад

    большоооооооооооооооооооооое спасибо!продолжай в том же духе!

  • @duha_prostoy3953
    @duha_prostoy3953 7 месяцев назад

    ку, спасибо за видос. А это на пучарме можно сделать? Если да, подскажи как классы написать

  • @kamfechannel8477
    @kamfechannel8477 2 года назад

    Спасибо большое

  • @m_video_prydyba
    @m_video_prydyba 2 года назад +1

    Thank you

  • @narkotr4fic843
    @narkotr4fic843 Год назад

    Кто-нибудь объясните, почему использовав переменную в функции add_element, но не использовав ее в функции show, результат все равно оказался корректным?
    def add_element(self,value):
    if not self.head:
    self.head = Node(value)
    return
    cur = self.head
    while cur.follow is not None:
    cur = cur.follow
    cur.follow = Node(value)
    def show(self):
    collector = ''
    while self.head:
    collector += f'[{self.head.value}]-->'
    self.head = self.head.follow
    collector += 'None'
    print(collector)
    При этом, если в функции add_element все делать не через переменную cur, а напрямую использовать self.head и тд, то отображаться в результате будут только последние 2 элемента в связном списке?

  • @МаріяСметанюк-ю1р
    @МаріяСметанюк-ю1р 2 года назад

    Почему сравнение с array? Разве list не чаще используется в Python?

  • @anytrofi
    @anytrofi 2 года назад

    👍

  • @cristianglodeanu2329
    @cristianglodeanu2329 Год назад

    а разве нельзя просто добавлять дату нодов в новый лист и делать ретурн листа с [::-1]

  • @fedanov8251
    @fedanov8251 Год назад

    я 200 попищек где мой приз

  • @nr_cyber
    @nr_cyber 2 года назад

    help me

  • @artyomklg915
    @artyomklg915 7 месяцев назад

    1) Связный список одна из самых бесполезных структур данных. Даже дядька который его придумал (не помню его имени) написал, что за 25 лет ни разу его не использовал в работе, как и 99.9999% разработчиков.
    2) геттеры и сеттеры в питоне это позорище, как минимум лучше просто обращать к полям, а как максимум использовать @property. Но если эти методы просто присваивают значение, то их использование это только лишние строки кода
    3) == None?????ахахаха Серьёзно? Тут обязан быть оператор is или is not там, где !=
    Зашел посмотреть чисто, что тут можно объяснять 50 минут, даже на лекции в универе этой бесполезной теме посвещают максимум 20, просто чтобы люди знали что такое есть.

  • @Bloodyrabbit97
    @Bloodyrabbit97 10 месяцев назад

    Спасибо, нихера не понятно

  • @linked_list_DLL
    @linked_list_DLL 3 месяца назад

    Автор, ты немного недопонял, как работают связные списки. Смотри: у тебя операции добавления ноды в конец выполняются за линейное время, что довольно долго. Это происходит потому что ты используешь 1 указатель, который итерируется по всем нодам. Это немного неправильно. В связных списках должно быть 2 указателя (1 - начальный указатель, который может итерироваться до n-1 позиции. 2 указатель - всегда остаётся на последней ноде).

  • @denfortdenfort3844
    @denfortdenfort3844 7 месяцев назад

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

  • @РоманРахлин
    @РоманРахлин  3 года назад +7

    Прошу огромное прошение за чёрный экран начиная с 02:42 минуты! Вот картинка которая должна была там быть 👉 m.imgur.com/a/6B8StHR

  • @ЮрийКлименко-к3щ
    @ЮрийКлименко-к3щ 2 года назад +2

    для длины было было логичнее переопределить магический метод __len__

  • @EtaSensey1
    @EtaSensey1 2 года назад +2

    Вообще не мог понять эту тему. Но после просмотра этого обьясненя прям прозрел. Спасибо автору!!!

  • @mrfang5908
    @mrfang5908 Год назад +1

    Тупил с этим линкедлистом, не мог найти видоса, твой помог, стал лучше понимать как это работает, осталось с реверсом до конца вникнуть и все, спасибо

  • @_mrmark
    @_mrmark Год назад +1

    Роман, огромное тебе спасибо. Ты спас мою нервную систему . Наконец-то до меня дошло, как это работает.👍

  • @oskar_wild_7459
    @oskar_wild_7459 Год назад +1

    Шикаррно! Лучшее объяснение

  • @СергейНауменко-ь6н

    @user-jd3hb4vd2z
    может запишешь еще нам видосик про double LL и другие структуры данных которые ты уже умеешь реализовывать?

  • @kateqper
    @kateqper 2 года назад +2

    Спасибо за видео. Не мог бы ты ещё подсказать, как из получившегося списка сделать массив?

    • @РоманРахлин
      @РоманРахлин  2 года назад

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

  • @jamjam3337
    @jamjam3337 Год назад

    👏

  • @diman445
    @diman445 2 года назад +1

    Лучший!

  • @kokinsergei
    @kokinsergei Год назад +1

    Самое классное объяснение связанных списков. Спасибо

  • @deniskorobkin8574
    @deniskorobkin8574 Год назад

    Крутой материал, спасибо!

  • @kotovasya87
    @kotovasya87 Год назад

    Спасибо за примеры. Помогло вникнуть глубже.

  • @СергейНауменко-ь6н

    Молодец спасибо!

  • @sergeyshestakov607
    @sergeyshestakov607 Год назад

    Спасибо! помогло

  • @rlxinc.6016
    @rlxinc.6016 2 года назад

    Спасибо 🤜🤛