Алгоритмы на Python 3. Лекция №5

Поділитися
Вставка
  • Опубліковано 25 лис 2024

КОМЕНТАРІ • 565

  • @ДмитрийЗинченко-м6с
    @ДмитрийЗинченко-м6с 4 роки тому +671

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

    • @rio5121
      @rio5121 3 роки тому +24

      Это современный взгляд, испорченный капитализмом. При союзе образование было бесплатным.

    • @vanadoo5836
      @vanadoo5836 3 роки тому +3

      Поддерживаю!

    • @quddi
      @quddi 3 роки тому +7

      @@rio5121 если вспомнить все, что было при нем, то лучше уж так, как сейчас

    • @ivanprokofyev
      @ivanprokofyev 3 роки тому +1

      @@quddi, если бы еще знать хоть что-то о "нем".

    • @ivanprokofyev
      @ivanprokofyev 3 роки тому +4

      Сильно преувеличиваешь, похоже, что в силу идеалистических представлений об окружающем мире и в силу того,
      что "слаще морковки" ничего не пробовал, т.е. не знаешь, что такое образование, которое направлено на подготовку специалистов,
      а не на штамповку компетентных потребителей.
      Какую такую информацию, в каком качестве?
      Сплошное самолюбование автора и ни дидактики, ни методики, ничего-то особенного.
      Современное образование, это заигрывание с УО, с набалованными детишками,
      это снижение требований и сложности для того, чтобы набрать необходимое количество молодых балбесов
      для з/п преподов ну и немного или много в карман положить.
      Это не про образование все, это все про профанацию и свободный рынок.

  • @iritaka
    @iritaka 4 роки тому +288

    Тайм-коды: Массивы, тип list
    1:30 Список (list) как массив данных. Массив - такой способ доступа к данным, когда есть 1 имя и сразу много данных
    4:15 for x in A:
    8:18 модель данных в Python. Как хранятся данные. Есть изменяемые и неизменяемые типы (объекты)
    9:05 числа являются константами. Неизменяемый тип
    9:52 ссылочная модель связи имени и объекта
    13:30 доступ к элементу массива по индексу. У первого элемента - индекс 0. Поэлементный доступ к массиву
    17:31 А = [0] * 1000 # создание массива А с тысячью нулей
    19:08 уровень заполненности массива. Top
    25:42 удаление элемента из конца и начала массива
    27:12 копирование массива. поэлементное копирование. копирование задом-наперёд
    29:58 хотя имена а Питоне создаются методом присваивания в них, нельзя сделать С = А, чтобы сделать копию списка
    30:36 ссылочная модель данных в Python
    32:46 изменяемость списка. list - изменяемый объект
    33:34 int неизменяемый объект. Число по ссылке изменить нельзя
    35:40 C = list(A) # чтобы сделать дубликат списка. копию
    36:20 линейный поиск в массиве
    36:52 в параметрах функции можно уточнить тип параметра (после двоеточия)
    39:22 тестирование
    47:16 функция с pass возвращает None type (тип Ничего) - специфическая переменная
    49:19 алгоритм обращения массива
    1:03:03 добавление элемента в конец и в начало массива
    1:04:06 алгоритм циклического сдвига в массиве. влево
    1:08:55 вправо
    1:10:40 алгоритм решето Эратосфена
    1:12:24 bool неизменяемый тип
    1:13:38 if A[k] # если A[k] равен True
    1:17:18 тернарный оператор

    • @cracoh
      @cracoh 4 роки тому +4

      спасибо вам!

    • @igoweiqibaduk8283
      @igoweiqibaduk8283 3 роки тому +5

      Иритака, ты очень очень очень хороший человек! Твои таймкоды круче яндекса и гугла вместе взятых!

    • @iritaka
      @iritaka 3 роки тому +2

      @@igoweiqibaduk8283 Ну Очень приятно! Спасибо огромное!!

    • @ivanprokofyev
      @ivanprokofyev 3 роки тому +1

      Массив, это не способ доступа, а структура данных.
      Под способом доступа можно понимать тот или иной конкретный синтаксис или работу интерпретатора.

    • @iritaka
      @iritaka 3 роки тому

      @@ivanprokofyev хорошее замечание

  • @YellowNoski
    @YellowNoski 5 років тому +68

    Вот это я понимаю - класс!
    Человек просто взял и на примере кнопок в лифте и наименовании этажей во Франции идеально объяснил логичность индексации с 0.
    Браво!

  • @evheniihoroshko1161
    @evheniihoroshko1161 3 роки тому +6

    Здоровья вам Тимофей Хирьянов. Как хорошо что я нашел ваш канал. Читать статьи разные что такое стр инт и т.д. Окей базовые понятие , а тогда думаешь а чего же дальше начать, думал нужно учить синтаксисы ,а они оказываются непостоянны и меняются. То что вы раскладывание по полочкам облегчает мне и другим жизнь
    Я люблю чтобы всё было от и до и с рассказано почему так ( по каким правилам )
    А не то что в интернете говорят общие понятия - что должно быть так и никак иначе А потом у меня другие вопросы и ищешь в интернете на свой же вопрос ответ.

  • @ждувесну
    @ждувесну 3 роки тому +7

    За такое преподавание педагоги должны получать большую зарплату и входить в селебрити) давно пора записывать и выкладывать лекции, чтобы отсеять и поувольнять тех, кто бубнит себе под нос, путается в показаниях и кого тоска зеленая слушать) спасибо за увлеченность и добросовестность

  • @CurlyBeaver
    @CurlyBeaver 4 роки тому +176

    То чувство, когда в бесплатных лекциях на youtube человек объясняет проще и понятнее, чем в купленных мной платных онлайн-курсах за 30к...
    Жаль, что нельзя пожать руку, очень талантливый преподаватель!

    • @Mishanya00
      @Mishanya00 2 роки тому +7

      Ну так это не просто человек, а преподаватель МФТИ, квалифицированнее некоторых преподов курсов будет

    • @ИсмоилХакимов-р8щ
      @ИсмоилХакимов-р8щ Рік тому +1

      с курсами за 150к тоже самое... у меня столько стоит

    • @elenam4339
      @elenam4339 Рік тому

      зачем сравнивать университетское образование и онлайн-курсы ))

    • @iml404
      @iml404 5 місяців тому +1

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

  • @Dimonitos
    @Dimonitos 5 років тому +103

    Хорошие емкие лекции. Спасибо за материал. Было бы гораздо удобнее если в названии будет тема лекции! Например: "Алгоритмы на Python 3. Лекция №5 (Массивы)"

  • @elliottroot513
    @elliottroot513 4 роки тому +5

    Я Вас очень сильно уважаю. Словами не передать как я счастлив смотреть Ваши лекции

  • @kurchiparchi
    @kurchiparchi 18 днів тому

    Тимофей Федорович, низкий Вам поклон за ёмкую и познавательную лекцию!

  • @МихаилЛелюхин
    @МихаилЛелюхин 5 років тому +168

    Такие знания . Бесплатно . Бескорыстно . Настоящий русский Учёный .

    • @Berseny
      @Berseny 4 роки тому

      Знания бесплатно и бескорыстно -- это про коммунистов, а не про ррррусских. Ведь какой-нибудь буржуй, наживающийся на интеллектуальной собственности, не перестает от этого быть ррррусским буржуем. Верно? Правильно сформулировать: прогрессивный ученый левых взглядов (даже если он сам лепит чушь про какую-то нравственность в лагере праваков). По поступкам товарищ вполне себе марксист. =))

    • @beria_
      @beria_ 4 роки тому +6

      @@Berseny у тебя шлак в голове

    • @Berseny
      @Berseny 4 роки тому

      @@beria_ Да неужели? А у тебя точно шлака в башке нет? А? Уверен? =) Наивный человечишко. =)

    • @Berseny
      @Berseny 3 роки тому

      @@Русь-Родина А пока с чужого канала, это не бескорыстно? Нет, ну если ему заплатил кто-то за съемку уроков... Ну хз. Здесь бескорыстность не в том, что человек ничего не получил за свой труд педагога, это был бы альтруизм. Бескорыстие в том, что всеми знаниями вправе воспользоваться всякий человек. Интеллектуальная собственность -- зло!

    • @Berseny
      @Berseny 3 роки тому

      @@Русь-Родина Являясь достоянием всего человечества, это уже не интеллектуальная собственность, а общечеловеческое богатство. Я имел в виду, конечно же, частную собственность на знания, ну или собственность корпоративную. Ну когда остальные обязаны платить и покупать каждый раз, когда им необходимо, а у продавцов от этого не убывает. Уродливая система капитала, античеловеческая. Сделали из знаний подобие валюты, которая призвана приумножать их капиталы. Причем авторы к этим продажам зачастую не имеют никакого отношения. Они трудились на корпорацию, вот она и присвоила все их наработки. А человек просто раб, получил зарплату и всё! Никакой интеллектуальной ренты, хрен в зубы, и грызи. =) В общем, паразитическая система.

  • @True_Ulatim
    @True_Ulatim 5 років тому +12

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

    • @westend_school
      @westend_school 4 роки тому

      почему-то не нашел 6ю лекцию. она еще активна?

    • @psychicks3463
      @psychicks3463 Рік тому

      @@westend_school ua-cam.com/video/NLq7nB9bV0M/v-deo.html

  • @АнтонВладимирович-ъ8ы

    Спасибо Вам за уроки! Замечательная подача материала!!!

  • @sergejkaznov2677
    @sergejkaznov2677 4 роки тому +4

    НАСТОЛЬКО ПРОСТЫМ ЯЗЫКОМ И ТАК ИНТЕРЕСНО УВЛЕКАТЕЛЬНО
    ПОБОЛЬШЕ БЫ ТАКИХ УЧИТЕЛЕЙ
    👍👍👍☝️👍👍👍

  • @Леонид-с5з
    @Леонид-с5з 4 роки тому +48

    - Список как массив данных (1:24):
    - Перебор списка по порядку (просто вывод элементов без возможности изменения их в списке): 4:04
    - Модель данных в Питоне (как получить доступ к самим объектам в списке и манипулировать ими): 7:48
    - Как создавать длинные списки (которые проблематично создавать вручную): 17:27
    - Добавление элементов в список с помощью цикла while: 18:58
    - Вывод чисел из списка в обратном порядки с помощью цикла for: 23:54
    - Удаление элементов из списка: 25:42
    - Копирование массива: 27:08
    - Сокращенный вариант копирования списка через list: 35:40
    - Линейный поиск в массиве: 36:13
    - Написание функции тестирования: 39:43
    - Алгоритм обращения массива: 49:12
    - Добавление эл. в конец и в начало массива: 1:03:03
    - Алгоритм циклического сдвига: 1:03:47
    - Решето Эратосфена: 1:10:40

    • @Andrei-de6mf
      @Andrei-de6mf 3 роки тому

      И? Это любой студент знает?

  • @volodimirbatalov7442
    @volodimirbatalov7442 4 роки тому +6

    мозга кипит, но мне нравится, спасибо Тимофею большое... много вещей, подробно, наглядно, даже вопросов не возникает...

  • @3405-j2w
    @3405-j2w 3 роки тому +3

    Спасибо Вам за уроки!
    Пусть ваша деятельность будет всегда успешной, доброго счастья вам, крепкого здоровья и уважения.

  • @shaykhinurov
    @shaykhinurov Рік тому +2

    Так, эту лекцию посмотрел, теперь не запутаться, в следующий раз смотреть следующую.

  • @gornakovs
    @gornakovs Рік тому +3

    Спасибо тебе Добрый человек за эти лекции

  • @MarkNikita1
    @MarkNikita1 Рік тому +1

    Огромное спасибо за уроки! Вместе с вами учиться намного приятнее и легче)

  • @patrickspilmann5008
    @patrickspilmann5008 3 роки тому +10

    Тимофей, БРАВО! СПАСИБО! Вы ЛУЧШИЙ преподаватель!!!!

  • @rinatsarmuldin8118
    @rinatsarmuldin8118 4 роки тому +1

    Талант и интелект вот это человек с большой буквы!

  • @RuslanZinovyev
    @RuslanZinovyev 4 роки тому +5

    Решето Эратосфена гениально расписан на Пайтоне, просто красота, так круто когда на память на доске можешь его написать.

  • @Kostya_kzn
    @Kostya_kzn 5 років тому +14

    Правильно говорят: "Если преподаватель не может объяснить 6 летнему ребенку, то он сам не разбирается в предмете!". Лекции просто чудо!!! В четко, ясно и понятно.

  • @mariyaalberdina9917
    @mariyaalberdina9917 2 роки тому +1

    Очень здорово! Обучение это очень важно, хорошо что вы есть и так хорошо делаете свою работу!

  • @yevhenukrainianer4781
    @yevhenukrainianer4781 6 років тому +15

    Тернарный особо порадовал. Спс за лекцию.

  • @aezakmi50872
    @aezakmi50872 5 років тому +3

    Спасибо за лекции . Очень познавательный матерьял . Мне как программисту .Вы оказали огромную помощь .

  • @alexmak8305
    @alexmak8305 5 років тому +119

    за "шо це таке" на 58:18- отдельный лайк!!!)

    • @andreyvbvbvb
      @andreyvbvbvb 5 років тому +3

      На секунды две поздно напсал

    • @mihakgma
      @mihakgma 4 роки тому +1

      не уразумив ы не побачив) шо це такэ?)

    • @sanjarkenjayev7368
      @sanjarkenjayev7368 3 роки тому

      а что такое шо це текэ ? из Мариуполя препод

  • @yesugibe7041
    @yesugibe7041 5 років тому +8

    Спасибо за материал и отличную подачу!

  • @konstantinselivanov8513
    @konstantinselivanov8513 3 роки тому +2

    Тимофей, вы лучший! Спасибо!

  • @anatoliiljin6870
    @anatoliiljin6870 2 роки тому +1

    Спасибо! Вы самый лучший преподаватель!

  • @shadedeveloping4705
    @shadedeveloping4705 4 роки тому +46

    Преподаватель: "Лабы пропускать нельзя"
    Я за компом: ....

  • @konst2087
    @konst2087 2 роки тому

    пользуясь несколько лет срезами на уровне рутины я даже и не выдумывался в такие нужные вещи

  • @ZlataDobrovolny
    @ZlataDobrovolny 3 роки тому +1

    Это гениально! Блокбастер по программированию!

  • @Qwerty-fn3rf
    @Qwerty-fn3rf 5 років тому +47

    препод от бога

  • @AnastasiaKorosteleva_SPb
    @AnastasiaKorosteleva_SPb 5 років тому +6

    лектор очень душевный!

  • @_pheax
    @_pheax 4 роки тому +2

    спасибо, Тимофей Фёдорович

  • @ЕкатеринаАндреева-ц3ю3э

    Вообще интересное объяснение логичности индексации с нуля. Забавное. Строго говоря во Франции нет нулевых этажей (хотя кнопка ноль в лифте присутствует). Первый этаж в нашем понимании по французски это Rez-de-chaussée произносится что-то вроде Редшосэ и переводится как «рядом с дорогой из известняка» или «на уровне дороги из известняка». Я так понимаю по нашему это земляной пол :). Даже в лохматой древности у нас не было в традиции строить дома с земляным полом, климат не тот. :) Поэтому вероятно у нас всё начинается с первого этажа, а не с нулевого.

  • @СтепанБендеров
    @СтепанБендеров 4 роки тому +2

    58,11
    B = [1, 2, 3, 4, 5]
    C = [ ]
    for k in range (len(B)-1,-1,-1):
    C += [B[k]]
    for k in range (len(C)):
    B[k] = C[k]

  • @Lexfr0mkhar
    @Lexfr0mkhar 5 років тому +2

    Приятно слушать и созерцать!

  • @memprus
    @memprus 5 років тому +15

    Во втором гуманитарном корпусе МГУ, где сидит факультет ВМиК 9Вычислительная Математика и Кибернетика), лифт от 0 до 7)))

  • @АлексАлексов-ф4о
    @АлексАлексов-ф4о 4 роки тому +1

    Лекции класс не возможно уснуть , подписался..

  • @777richok
    @777richok 3 роки тому +2

    В лектории очень тихо, потому что лекция увлекательная!

  • @vaal5500
    @vaal5500 4 роки тому +2

    Спасибо за прекрасную лекцию)

  • @BoldBass24
    @BoldBass24 4 роки тому +2

    Комментарий в поддержку контента.

  • @rustamturaev5361
    @rustamturaev5361 4 роки тому +1

    Спасибо, продолжаю изучение с удовольствием)

  • @alekseytrump1586
    @alekseytrump1586 3 роки тому

    Спасибо за лекции. Лучшие!!!

  • @maratgabitov
    @maratgabitov 3 роки тому

    23:07 Всё понятно, топ лекция, продолжайте) (молчание - это глубокая заинтересованность)

  • @vitalikos2010
    @vitalikos2010 5 років тому

    Последние 8 минут видео сделали мой день...

  • @harislam86
    @harislam86 2 роки тому +2

    "Лукавлю я, конечно... Слава Богу, что вы Питон не знаете" 🤣🤣🤣🤝🏻

  • @Siren476
    @Siren476 6 років тому +306

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

    • @ДенисКатанугин-ц2е
      @ДенисКатанугин-ц2е 6 років тому +139

      Сороковой десяток или все таки четвёртый?

    • @Siren476
      @Siren476 6 років тому +29

      Денис Катанугин Да, долго я необразованная живу)

    • @danalexpiano
      @danalexpiano 5 років тому +15

      Stacy Miller не надо вам в программисты ))))))

    • @фокусмокус-я2з
      @фокусмокус-я2з 5 років тому

      )

    • @b.g.5106
      @b.g.5106 5 років тому +3

      @@danalexpiano программисты не люди))))

  • @MrEvgeny57
    @MrEvgeny57 2 роки тому +1

    В "решете" во втором цикле просева составных чисел в range вместо 2*k лучше использовать k**2. Все до него будут составные, отфильтрованные предыдущими итеррациями

  • @НиктоНиктоев-щ7ю
    @НиктоНиктоев-щ7ю 4 роки тому +1

    Тимофей Федорович, спасибо Вам большое за публикации своих курсов на ютубе! У меня возникло одно замечание, я его выскажу, не сочтите за неуважение. Я как будто заметил, что некоторые вещи людям непонятны, на первом курсе у студента ветер в голове) да и мне тоже иногда трудно) вот к примеру эти списки, а зачем они вообще нужны? А если непонятно зачем этот инструмент нужен, трудно в нем разобраться. Не лучше ли подавать материал с практической точки зрения? т.е. вот к примеру есть задача с помощью питона проанализировать введеные данные к примеру значения температуры (или я не знаю что еще))), и вот для этого можно применить такую вещь как списки, и вот так-то они устроены и т.д. или же еще на первой лекции можно было поставить задачу написать примитивный калькулятор, и параллельно объяснить все базовые вещи. ну как то так, спасибо)

  • @dmitrijloskutnikov694
    @dmitrijloskutnikov694 2 роки тому

    48:50
    Гениально.
    1:00:51
    Я это ивертирование мучил за пару дней до просмотра видео. И прошёл по всем граблям, что тут показаны.

  • @zvezdodinka
    @zvezdodinka 2 роки тому

    def reverse_list(lst):
    ''' разворачивает список
    '''
    b, n = [], -1
    for i in range(len(lst)):
    b.append(lst[n])
    n -= 1
    return b
    lst = ['5', '4', '3', '2', '1']
    print(reverse_list(lst))

  • @userr19194
    @userr19194 3 роки тому +1

    *в конце лекции как всегда "отжигаете"))*

    • @tkhirianov
      @tkhirianov  3 роки тому

      Заинтриговали. Не понял на какой именно минуте и что именно вы имеете в виду.

    • @userr19194
      @userr19194 3 роки тому

      Для начала, раз Вы мне ответили, хочу поблагодарить Вас за эти лекции. Очень интересно и доступно объясняете. Занимаюсь с удовольствием.
      А насчёт "отжигаете", я имел ввиду, что в конце лекций Вы часто в сжатые сроки объясняете сложные моменты :)
      И благо, я могу перемотать, посмотреть и обдумать несколько раз. На живой лекции я бы такой роскошью не обладал :)

  • @ФедякинРоман
    @ФедякинРоман 3 роки тому +1

    def make_primes_list(num):
    primes = []
    sieve = [x for x in range(2, num + 1)]

    while sieve:
    prime = sieve[0]
    primes.append(prime)
    sieve = [x for x in sieve if x % prime != 0]

    return primes
    Более читабельный вариант решета Эратосфена для тех, кто умеет в list comprehensions

  • @ntvisigoth
    @ntvisigoth 2 роки тому

    1:18:46:
    Тернарный оператор рекомендую попробовать так:
    (alternative_false, alternative_true)[your_check]
    Пример:
    ('Number is prime', 'Number is complex')[is_number_prime(number)]
    Это связано с тем, что True, False преобразуются в цифры 0 и 1, а их можно использовать в качестве индекса.
    Сравним эту и тернарную форму:
    1. ('Number is complex', 'Number is prime')[is_number_prime(number)]
    2. 'Number is prime' if [is_number_prime(number)] else 'Number is prime'
    Возможно, дело вкуса. Но мой вариант, мне кажется, выглядит привлекательнее

  • @PodsasBoosty
    @PodsasBoosty 5 років тому +19

    21:10 Тишина, понятно да? да! значит ничего не понятно)

  • @ruslanways
    @ruslanways 2 роки тому +2

    16:00 с версии Python 3 - PEP рекомендует использовать enumerate, если хотим получать индексы.

  • @yulii1171
    @yulii1171 4 роки тому +2

    Очень интерессно. Спасибо

  • @devour_dead
    @devour_dead 5 років тому +2

    Чорт! Такой препод, что мне хочется все бросить и бегом программировать, писать самые простые вещи, тупить, ломать голову, снова тупить, решать и дальше дальше дальше. Все четко, системно, понятно, мозги шевелятся.

  • @ВаллиВалли-у1р
    @ВаллиВалли-у1р 5 років тому +1

    Не не скучно , а интересно

  • @АлексейПилин-б2ф
    @АлексейПилин-б2ф 3 роки тому

    Такой жирный лайк поставил, что чуть телефон пальцем не раздавил

  • @maratimus
    @maratimus 5 років тому +1

    N =int(input())
    A = [True] * N
    for i in range(2, N-1):
    if A[i]:
    print(i)
    for j in range(i*i, N-1, i):
    A[j] = False

    • @maratimus
      @maratimus 5 років тому

      Здесь по другому через квадрат, тоже работает

  • @АлександрБушев-м8п

    здоровья Вам.

  • @АлексейСеменихин-и2н

    Блин мужик, ты где такой спинжак отхватил😂👍

  • @rkevlarovich3653
    @rkevlarovich3653 4 роки тому +1

    Тимофей, ну где ты был (да и я тоже) лет эдак 22 назад? )))) мне бы таких преподов (еще раз повторюсь) в универе, я бы стал точно программистом. А сейчас приходится самообразованием заниматься - что абсолютно несложно несмотря на пройденное время и возраст))) Спасибо и удачи!

  • @maxchel5901
    @maxchel5901 11 місяців тому +2

    1:11:11 решето Эратосфена

  • @StankBrewing
    @StankBrewing 2 роки тому

    Спасибо за материал 🙏

  • @xrollup
    @xrollup 4 роки тому +3

    Етитская сила, я наконец-то понял как работает решето Эратосфена!

  • @Андрей-ь1л7к
    @Андрей-ь1л7к 4 роки тому +1

    Очень артистично !)

  • @Вадим-г6м9я
    @Вадим-г6м9я 2 роки тому

    Шо це таке) Це було прикольно) Ніколи штірліц не був так близько від провалу) ))

  • @murzinovleonid8355
    @murzinovleonid8355 2 роки тому

    Большое Вам спасибо!

  • @АнтонКулибякин
    @АнтонКулибякин 6 років тому +3

    Спасибо, преподаватель)))

  • @eugene8390
    @eugene8390 6 років тому +1

    можно циклический сдвиг осуществлять при помощи деления по модулю, т.о. индекс всегда остается в пределах массива и временная переменная не нужна
    def cyclic_shift(N:list):
    l = len(N)
    for i in range(l - 1):
    index = (i + 1) % l
    N[i], N[index] = N[index], N[i]
    return N

    • @arhangelist
      @arhangelist 5 років тому

      Можно, только не ясно зачем - отказались от временной переменной, получили двукратный рост операций с памятью на каждом шаге цикла. То есть работает дольше, а профит не ясен. Подробнее:
      ВАРИАНТ 1 (исходный): на каждой итерации соседняя ячейка тупо затирается новым значением, то есть это операция:
      "считать исходное значение в ячейке A ==> сохранить его в ячейку А+1".
      О судьбе исходного значения в "А+1" можно не заботиться, так как массив обходим в направлении, противоположном направлению сдвига, а самый первый элемент (который в любом случае будет затерт) сохранили во временную переменную еще до цикла. Останется только по окончании цикла восстановить его из tmp в условно "последнюю" (или "первую") ячейку;
      ВАРИАНТ 2 (новый): ради отказа от временной переменной, мы _на каждой итерации_ вынуждены сохранять значение соседней ячейки, так как иначе её содержимое будет утеряно. Вы для этого используете "обмен значениями", но строго говоря это не суть - так или иначе мы получим операции, по нагрузке схожие с:
      "считать исходные значения в ячейках А, Б ==> сохранить исходные значения из А, Б в ячейки Б, А".
      Даже на вскидку видно, что это в два раза больше на каждом шаге (читаем и А и Б, записываем так же и А и Б). Не явно действий может быть и того больше, так как по факту "обмен значениями переменных" Питон (если угодно Пайтон) также осуществляет через временную переменную, только делает это незаметно для программиста. Об этом в том числе сказано в данных уроках (если не ошибаюсь, в первом, там где речь о базовом синтаксисе объявления/присваивания значений переменных).

    • @nepBoHax
      @nepBoHax 5 років тому

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

  • @user-ck2sb2uc2b
    @user-ck2sb2uc2b 4 роки тому +14

    Пока студенты молчат , я разговариваю с ПК ...

    • @quadroninja2708
      @quadroninja2708 3 роки тому

      Мне кажется, они задумались, а преподаватель пошел вперёд мысли студентов, вроде пытаешься понять, но нужно догонять и не до вопросов

  • @antonkozachkov8897
    @antonkozachkov8897 2 роки тому

    Только из интернета можно узнать какие подвиги совершают учителя. Спасибо.спасбо.спасибо.

  • @vitaliisvinovei9690
    @vitaliisvinovei9690 2 роки тому

    58:17 Шо це таке?! XD
    подняло настроение)) спасибо большое за видео

  • @makedatauseful1015
    @makedatauseful1015 2 роки тому

    Супер преподаватель

  • @АлександрЛагутов-д8г

    @Тимофей Хирьянов, доброго времени суток. В Контесте для групп 737 и 738. Задание D, даётся последовательность чисел, однако в тестах с 6 по 10 дается список. И судя по проверкам, необходимо переместить последний элемент в начало. В самом задании об этом ни чего не сказано. 1-й семестр, 6-я неделя (группы 737-738

    • @tkhirianov
      @tkhirianov  3 роки тому

      @Александр Лагутов Спасибо большое за фидбек! Действительно, в тестах к заданию ошибка. Только это не список, а просто числа даны в строку. Я бы выкинул тесты с 6-го по 10-й или изменил их, но прямо сейчас у меня нет доступа к тестам на этом сервере. Я написал сисадмину с запросом доступа, но пока не могу вам помочь.

    • @tkhirianov
      @tkhirianov  3 роки тому +1

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

  • @BudinCars
    @BudinCars 6 років тому +48

    как же поздно я нашел это(

  • @idontknow3489
    @idontknow3489 5 років тому +2

    30:00 легче вот так)
    from random import randint
    N = 5
    A = B = [0] * N
    for k in range(N):
    B[k] = A[k] = randint(0,10) #запихивает рандомные числа в список

    • @arnoldd5345
      @arnoldd5345 4 роки тому

      Класс!

    • @ФедякинРоман
      @ФедякинРоман 3 роки тому

      Можно еще проще: B = A = [randint(0, 10) for _ in range(N)]

    • @ФедякинРоман
      @ФедякинРоман 3 роки тому

      А если N прилетает из инпута, то в одну строчку: B = A = [randint(0, 10) for _ in range(int(input()))]

  • @YourLanguageHelp
    @YourLanguageHelp 5 років тому +9

    24:45 не "4", а "top - 1"

  • @ВладленГорбовской

    Тимофей Федорович не незапустил тест на функцию invert_array, а она все равно выдала что test - Failed, так как сравнение для массивов A == B не работате. В этом случае сравнение будет не самих элементов а ссылок на область память, что для разных массивов всегда будет False

  • @Sigma8484
    @Sigma8484 6 років тому

    решето эратосфена можно сильно ускорить и в два раза сократить выделяемую память, если проверять только нечетные числа (индекс булевого массива = индекс нечетного числа, перевод из индекса в число 2*k+1) и вложенный for начинать не с 2*k, а с k*k, а внешний вести до sqrt(N)

    • @eugenedukatta9355
      @eugenedukatta9355 5 років тому

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

  • @СергейОрлов-я5с
    @СергейОрлов-я5с 4 роки тому +1

    Классные лекции! Просто "бдыщь" головного мозга!🤪

  • @ДжоСаар
    @ДжоСаар 2 роки тому

    восхитительно

  • @lonelydance
    @lonelydance 3 роки тому

    29:58 Признак хорошего тона - копировать лист через срезы: C = A[:]

    • @8nhuman8
      @8nhuman8 3 роки тому

      лучше использовать метод copy(). Читабельнее

  • @BeginBye
    @BeginBye 6 років тому +1

    1:02:27 к N//2 в range нужно еще прибавить единицу, иначе итераций цикла будет недостаточно для достижения середины заданного участка списка. Ну и в конце еще нужно дописать, чтО функция будет возвращать, согласно поставленной задаче - фрагмент обращенного списка, определенного числом N. Таким образом, законченное решение будет следующим:
    for k in range(N//2 + 1):
    A[k], A[N-1-k] = A[N-1-k], A[k]
    return A[:N]
    А вообще - решение классное. Спасибо, Тимофей Федорович! Я, пока смотрел, поставил на паузу и решил задачу двумя способами:
    1. используя метод .reverse(), и применив его к нужному фрагменту списка, определенного числом N:
    fragment = A[0:N]
    fragment.reverse()
    return fragment
    2. создавая пустой список и наполняя его в цикле с помощью .append(), инициировав обратный счет от N-1 до -1:
    reversed_list = []
    for i in range(N-1, -1, -1):
    reversed_list.append(A[i])
    return reversed_list
    Ваш метод был не очевидным, и по этой причине - классным и ценным! Спасибо!!!

    • @denyslozinskyi7322
      @denyslozinskyi7322 6 років тому +1

      Evgeniy Cheremisinov относительно возвращения списка функцией ваше утверждение справедливо только в том случае, если в результате ее работы нас будет интересовать ВЕСЬ обращённый список. Но задача ведь стоит иная: "Обращение массива в рамках индексов от 0 до N-1", т.е. не весь массив, а его часть, отмеченная N. Поскольку N не обязательно будет совпадать с последним индексом списка, возврат участка имеет смысл.

    • @BeginBye
      @BeginBye 6 років тому

      Evgeniy Cheremisinov да, просчитался вчера насчёт единицы. Она там не нужна, спасибо. А насчёт возврата функции - нам же не весь список вроде как нужен, а его фрагмент с начала до N, насколько я понял постановку задачи.

    • @BeginBye
      @BeginBye 6 років тому

      Evgeniy Cheremisinov да, тут все зависит от постановки задачи) я понял иначе. Тем не менее, моя строчка возврата функцией заданного фрагмента обращённого списка добавляет функции универсальности и гибкости, так как позволяет получить результат как в работе с целым списком, так и с его фрагментом)

  • @ЭдуардМхитарян-з4ц

    жаль что у нас такого курса не было изучали а изучали аналоговые ВМ и чуть ЭВМ . классная лекция только для меня очень быстро

  • @СтепанБендеров
    @СтепанБендеров 4 роки тому

    A = [1, 2, 4, 7, 10, 13]
    for x in A:
    x*=x
    print(x)
    работает
    1
    4
    16
    49
    100
    169
    [1, 4, 16, 49, 100, 169]

    • @EvgeshaFromUa
      @EvgeshaFromUa 4 роки тому +1

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

    • @wava210
      @wava210 3 роки тому +1

      а допишите в конце print(A) без отступа (то есть не внутри for, а вне цикла) и поймете, что исходный список(массив) A остался прежним.

  • @sharkmax1934
    @sharkmax1934 23 дні тому

    24:20 "Начиная с top-1", а вместо этого в range пишет 4, что неверно.
    1:06:00 Зачем так сложно организовывать циклический сдвиг? Достаточно цикла for со swap'ом соседних элементов.
    1:03:00 написал программу, исправил все ошибки и не запустил, не показал что заработала.
    В одно месте говорит что итерации цикла считаются с 1, в другом говорит 0-ая итерация

  • @ЯСлавянин-п5х
    @ЯСлавянин-п5х 5 років тому

    Иногда прыгает с 5-го на 10-е. Не сразу понимаю, что хочет донести. А вообще очень достойно преподает.

  • @МарияВикторовна-у1з

    Как же эти лекции помогают, пиздец просто

  • @fainafaina8004
    @fainafaina8004 4 роки тому +6

    "запукаем.. Що цэ такэ?!"(С)))))

    • @Nurgul-d6m
      @Nurgul-d6m 3 роки тому

      Класс очень интересно смотреть,👍👍👍

  • @for30seconds20
    @for30seconds20 4 роки тому

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

    • @xinng0n
      @xinng0n 4 роки тому

      Это предположение. Работает навязанный школьными годами стереотип поведения .

    • @6598335
      @6598335 4 роки тому +2

      @@xinng0n, навязанный стереотип?! А чего тогда в любом (по возрасту и теме) учебном коллективе, когда не интересно, "студенты" начинают отвлекаться, разговаривать, заниматься посторонними делами?!

  • @Bolivia_Gennadii
    @Bolivia_Gennadii 3 роки тому

    Я только из интернета понял, что Решето это для поиска простых чисел. Бедные студенты сидели и думали, что там происходит.

  • @Pixel_Magic
    @Pixel_Magic 3 роки тому +3

    Чел, который знает питон: Кто-нибудь, пристрелите меня

  • @Бокопорьесвоимируками

    Кстати в Польше есть от ... -1,0,1,2,3... этажи!))

  • @Gerotero-r1o
    @Gerotero-r1o 5 років тому

    Отлично!)