PYTHON массивы на ПРОСТЫХ примерах. Отличия от СПИСКОВ и принцип работы

Поделиться
HTML-код
  • Опубликовано: 22 май 2024
  • Array массивы в Python с нуля в одном видео
    ⭐ Курс ООП и Приват канал: zproger-school.com/
    ⭐ Телеграм канал: t.me/+s9ScbtfzA3djNGI5
    В данном видео мы рассмотрим Array массивы, принцип их работы и основные отличия от списков. Часто многие путают эти структуры, и думают что списки и массивы это одно и тоже. Цель данного видео, показать основные отличия массивов и познакомить вас с
    📁 Github: github.com/Zproger
    📁 Все плейлисты с уроками: bit.ly/39GaY89
    📁 Связаться со мной: zproger777@gmail.com
    📁 Поддержать криптовалютой: github.com/Zproger/donate
    Таймкоды:
    00:00 - Вступление
    00:19 - Отличия массивов от списков
    2:10 - Типы данных и инициализация массива
    3:09 - Срезы, индексы
    3:58 - Развернуть массив
    4:54 - Узнать тип данных массива на лету
    5:23 - Конкатенация, умножение и объединение массивов
    5:51 - Узнать сколько байтов занимает тип данных массива
    6:12 - Добавить значения, узнать количество повторений
    6:28 - Преобразовать массив в список
    6:56 - Поиск индекса определенного значения
    7:23 - Добавить значение в массив по индексу
    7:48 - Вернуть и удалить значение из массива
    8:50 - Удалить значение из массива
    9:33 - Пишем мини программу используя массивы

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

  • @zproger
    @zproger  2 года назад +33

    Решил также к каждому видео добавлять таймкоды.
    Помогает ли это вам более комфортно смотреть видео?
    И стоит ли дальше разбивать видео на эпизоды?

    • @dev_line
      @dev_line 2 года назад +3

      помогает

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

      Да, спасибо очень удобно

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

      Спасибо! Таймкоды очень помогают.

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

      Было бы хорошо чуть помедленнее говорить.
      И куча спецэффектов... это лишнее, по итогу важнее информация и ее качественное донесение.
      Иногда "скучный" дядя у зеленой доски с мелом объяснит так, что всё становится понятно. Без лишней мишуры.

  • @user-qp3tl2nz1w
    @user-qp3tl2nz1w Год назад +27

    Для тех, у кого первый язык питон и не понимает отличие:
    b = от -128 до 127
    B = от 0 до 255
    u = юникод
    h = от -32768 до 32767
    H = от 0 до 65535
    i (взят для примера в видео) = от -2 147 483 648 до 2 147 483 647
    I (большая i, а не л) = от 0 до 4 294 967 295
    l (малая л, не путать с и) = от -2147483648 до 2147483647
    L = от 0 до 18446744073709551615
    q = от -9223372036854775808 до 9223372036854775807
    Q = от 0 до 18446744073709551615
    f = точность 6-7 знаков (32 битный)
    d = точность 15-18 знаков (64 битный)
    Для дополнения пишите в комментариях

  • @artembagachkov933
    @artembagachkov933 2 года назад +16

    Афигеть, я всегда знал что списки и массивы это разные вещи, но не знал что в Python тоже есть массивы.
    Спасибо большое 🔥🧑‍💻🤝

  • @user-wr2zb5mk7n
    @user-wr2zb5mk7n Год назад +6

    Никто не говорит про массивы. Все ограничиваются списком. Спасибо, очень доступно! лайк, подписка!

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

      Благодарю

  • @farion_egl1382
    @farion_egl1382 2 года назад +8

    единственный адекватный человек, который не сравнивает массивы со списками, почему-то когда я изучал C# проблем не было, но перейдя в питон тут все ничего не понимают, все в кучу чтобы не смотрел везде пишут так массивы(списки), спасибо что хотя бы ты хорошо объяснил ото я уже начал сомниваться

    • @zproger
      @zproger  2 года назад +3

      Благодарю, очень рад что понравилось :)

  • @denissavast
    @denissavast 2 года назад +5

    Отличная подача! Благодарю

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

      Рад что понравилось :)

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

    Друже, у вас один из самых полезных и насыщенных каналов! Супер. А про многомерные массивы что-то будет?

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

      а зачем про многомерные, там и так всё понятно, просто вместо size=* пиши size = (*, *...), или сколько там тебе надо измерений

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

    Спасибо, интересно а главное компактно.

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

      Спасибо за поддержку :)

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

    спасибо за видео, мне было полезно

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

      Пожалуйста :)

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

    Видео конечно полезное, но остался один вопрос какие преимущества дает массив, кроме экономии памяти?
    Решил потестить на сортировке вставкой и получилось, что места массив занимает в два раза меньше и почему-то алгоритм с ним работает медленнее хотя прогрессия сложности(O(n**2)) в случае со списком и массивом одинаковая.

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

    Подскажите пожалуйста, вот Вы открываете файл на 4:16 , как его можно открыть?
    И вообще есть ли какой-нибудь способ, чтобы открывать так все необходимые мне модули??

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

      Это делается через Ctrl+ЛКМ

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

      @@zproger спасибо 🥰

  • @pythonavr
    @pythonavr 2 года назад +7

    А почему в конце видео, в примере использования Array, лучше использовать именно его? Чем он лучше списка здесь? И вообще пример какой-то странный: этот цикл работает за О(n^2), хотя можно написать за O(n), и это даже проще и интуитивнее. Вроде бы Array нужен чтобы оптимизировать код, потому что некоторые операции в нём реализованы эффективнее, но в этом примере массив точно не спасает ваш код от квадратичной сложности. Плюс есть такой вопрос: зачем Array, если есть numpy? Разве хоть где-нибудь он будет эффективнее?

    • @zproger
      @zproger  2 года назад +5

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

  • @user-nv4rn8qy3l
    @user-nv4rn8qy3l Год назад

    Я не много понял я изучаю язык python спс за обучение

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

    Массивы в 2 словах:
    Итерируемый изменяемый объект фиксированного размера (size), хранящий элементы лишь определённого типа (data type или dtype). Имеет методы, похожие на методы списка, но функционал и скорость куда выше.
    Можно использовать специальные интегрированные типы, имеющие определенный размер в памяти с фиксировагным множеством значений.
    Сама библиотека numpy - обязательное пособие для каждого питониста.

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

    Раз посмотреть мало для меня надо ещё. Спс не знал отличия и не знал о array. Go видео про numpy

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

      Спасибо за идею :)

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

    Спасибо. Понятнее не стало))

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

      Пересмотрите ещё раз :)
      Можно комбинировать также несколько разных видео, чтобы
      материал лучше прорабатывался

  • @user-ip7sp6ip2g
    @user-ip7sp6ip2g Год назад

    что за питон такой я имею ввиду его внешний вид подскажите пж что за питон

  • @user-ml4xx7ii8x
    @user-ml4xx7ii8x 8 месяцев назад

    так разве список в питоне не ссылками наполняется?

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

    Где мне использовать этот массив ?

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

    Интересно. Но про асимптотику ничего :(
    Да ещё и последняя программа работает за квадрат, хотя должна линейно.
    И вообще, очень странно, что везде (за исключением примеров операций) для создания массива уже используется список, передаваемый в конструктор.

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

    Что касается самих массивов, то я их до сих пор не встречал при изучении (за два месяца). Ни в книгах (Лутц, Свейгарт, укус питона), ни на степике, ни на ютубе.
    Может они появились недавно, в новейших версиях)?
    Или все же массив это частный случай списка? Больно они похожи.

    • @user-bn6iu8uk1k
      @user-bn6iu8uk1k Год назад

      Потому что для новичков массивы бесполезны

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

      @@user-bn6iu8uk1k а можете подсказать, я правильно понимаю, что массив как и сказал автор ролика, достаточно уместно использовать именно тогда,когда мы знаем что расширяться набор данных не будет, и при этом он будет иметь данные одного типа? Ну то есть, с точки зрения оптимизации памяти и тд, если есть возможность использовать массивы, то лучше юзать их? Просто как пишут люди, и пока я сам лично не начал вникать во все эти штуки со списками, стеками и тд, действительно по шаблону юзал обычный лист и не задумывался. А потом посмотрел видиков с совбесов, а там оказывается спрашивают о таком. Кстати, как оказалось,гибрид из массивов и связных списков тоже крутая штука в некоторых ситуациях.

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

    0:58 А что это за ресурс такой интересный? Ссылочку плиз.

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

      www.w3schools.com/python/python_arrays.asp

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

      @@zproger О, спс =)

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

    for value in a:
    if value % 2 == 0:
    a[value] = 255 #почему не так в конце?)
    print(a)

  • @lzrdblzzrd
    @lzrdblzzrd 2 года назад +4

    0:38 А что он, собственно, делает?

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

      Сам сижу и офигиваю от его уровня. Хакерман)

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

    как вывести только парные числа?

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

      не понял, т.е. есть массив [1 2 3 4 5 6] и тебе нужно разделить его на 3 массива по [1 2][3 4][5 6] или одинаковые числа на подобие [2 1 2] - вывод 2?

  • @predatel_rodini
    @predatel_rodini 2 года назад +3

    Шлак какой-то. Не вижу никаких преимуществ в этих примерах. А насчёт потребления памяти там ещё нужно посчитать и поспорить. Если ты в массив (который как-бы концептуально должен быть неизменяемым типом данным с заранее заданным числом элементов) добавляешь новые элементы, то как минимум под капотом будет создаваться его полная копия с добавленным элементом. В то время как при изменении списка это будет происходить не каждое добавление элемента, а лишь иногда, когда он будет переполняться. Кароче тема где именно массивы в питоне лучше списков не раскрыта

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

      Вы больны? Зачем вам добавлять элементы в масссив? Для этого список есть

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

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

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

      В питоне массивы - шлак т.к. питоно-юзеры в основном занимаются не большими программами(уже давно доказано и разжёвано, что он не подходит для крупных проектов), в другом любом языке на подобие C++ или С# массивы очень нужны т.к. с их помощью легче работать, допустим у тебя есть список и массивы, в список попадают все элементы тобиш булл, инт, стр и т.д. в массивах есть такая вещь если допустим взять число 3 и поделить на 2 он меняет тип данных и массив его уже не пускает, а либо выдает ошибку, либо работает без него и поверь что со списком если он пропустит это, то полностью изменится смысл программы, кншн можно сделать проверку, но как и было сказано в видео массивы работают быстрее по 1 этой причине, так что делай вывод.

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

    где код генератора NFT, уже 700 лайков

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

      Код будет, но 26 января,
      так как кто-то накрутил лайки ботами.
      Вчера утром было 450 лайков и 500 набралось бы примерно дня за 2,
      а сейчас зашел и увидел +370 лайков за пару часов, 70 из которых потом ещё и списали.
      так что 26 января всё подготовлю и залью, чтобы больше не крутили в дальнейшем

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

      @@zproger окей, жду

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

    в lua есть только списки, и они такиеже

  • @user-eo9td2bj5q
    @user-eo9td2bj5q 2 года назад +1

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

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

      В новых видео уже достаточно крупный шрифт

  • @user-jk2oj4he7q
    @user-jk2oj4he7q 2 года назад +2

    в итоге нет инфы чем же отличаются

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

      Как это нет, а это что тогда?
      0:19 - 2:08

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

      @@zproger во 1) вы не раскрыли потенциал массивов по сравнению со списками и как ими удобно пользоваться, вы лишь показали верхушку айсберга. Во 2) мне оч понравилась подача видео, продолжайте в том же духе!

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

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

  • @Empty_Vima
    @Empty_Vima Год назад +6

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

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

    Нахрена так быстро говорить? Чтобы что? ;(
    Если хотите кому-то научить, то надо именно учить, т.е. стараться сделать так чтоб у человека хоть небольшая возможность была подумать. А вы бегом бегом бегом и у человека возникает 100500 нажатий на Back чтоб ответить на вопрос "А верно ли я услышал, что ... ?"

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

      Я об этом даже и не подумал, спасибо что подсказали, буду исправляться в след.видео 🙂

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

      @@zproger Спасибо! То что вы стараетесь поделиться знаниями это круто, но очень хочется, чтоб у меня была возможность успевать за вами!Ведь если я пришел на ваш канал,то меня очень волнует та тема, которую вы хотите передать мне. В качестве примера того, как можно доносить информацию программисту программистам можно взять и послушать, здесь в Ютубе курс про асинхронность от Олега Молчанова. Парень очень круто и метко доносит идеи. Используется там где надо паузы, чтоб слушатель чуть чуть подумал. Где-то останавливается и поясняет, что именно он делает. Там где надо указывает источники про использованию того или иного метода или библиотеки.

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

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

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

      RUclips имеет функцию скорости видео можно на 0.75, 0.5 поставить и будешь успевать )

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

      Нормально он всё говорит. Гораздо приятнее слушать, чем тех, кто вместо 10-минутного ролика делает часовой.