#31. Кортежи (tuple) и их методы | Python для начинающих

  Рет қаралды 42,769

selfedu

selfedu

2 жыл бұрын

Обучающий курс: stepik.org/course/100707
Кортежи (tuple) - как задавать, добавлять новые значения через оператор +, как дублировать элементы оператором *, как выполнять индексацию и срезы, как проверять наличие элемента оператором in. Узнаете о функциях len(), tuple() и методах count() и index().
Telegram-канал: t.me/python_selfedu

Пікірлер: 51
@tbassir9076
@tbassir9076 Жыл бұрын
Как всегда всё великолепно!!! 👍👍👍👍👍 Хочу добавить от себя, что уметь так объяснять это не каждому дано!
@selfedu_rus
@selfedu_rus 2 жыл бұрын
В предыдущей версии видео было некорректно сказано, что элемент добавляется в пустой кортеж оператором +. Это, конечно же, не так, данный оператор объединяет два кортежа и возвращает новый. Всем спасибо за замечания!
@olegkomlev
@olegkomlev Жыл бұрын
Скорее уж кортеж задают не круглые скобки, а запятая (перечисление через запятую при отсутствии квадратных или фигурных скобок). Поэтому просто заключить число в скобки недостаточно, нужно поставить запятую, чтобы это стал кортеж. А скобки ( ) нужны ,чтобы элементы кортежа не перепутались с остальной частью выражения. В некоторых случаях их можно не ставить: a=1,2 # кортеж (1,2) b=5, # кортеж из одного элемента (5,) a=(5,), # кортеж, содержащий кортеж из одного элемента Можно в консоли набрать 1,2,3 нажать Enter - увидим, что создался кортеж (1,2,3) А пустой кортеж без скобок не создать: c= # ошибка c=, # ошибка c=() # пустой кортеж Так что чаще всего скобки нужны.
@fufail
@fufail 11 ай бұрын
Блин. Какой приятный голос. И рассказывает дохотчиво. Спасибо!
@sega6574
@sega6574 2 жыл бұрын
спасибо дружище, все как обычно круто объясняешь))
@vladimirastrelin1719
@vladimirastrelin1719 2 жыл бұрын
Толковый урок. Спасибо большое
@user-hi1bw5gb3r
@user-hi1bw5gb3r 2 жыл бұрын
Очень интересно и подробно. Спасибо!
@andredru4278
@andredru4278 5 ай бұрын
Спасибо. Интересно изменение внутренностей кортежа.
@friend1cat
@friend1cat 2 жыл бұрын
Спасибо, Сергей!
@dimk7983
@dimk7983 2 жыл бұрын
Спасибо, полезно очень.
@daryap2439
@daryap2439 2 жыл бұрын
Очень крутой урок! Спасибо!
@elenalevasheva3830
@elenalevasheva3830 Жыл бұрын
Спасибо за урок, очень интересно и полезно
@dmitryzagorevskiy507
@dmitryzagorevskiy507 2 жыл бұрын
Сергей, спасибо за видео! Я бы ещё уточнил, что кортеж не может быть ключом словаря, если хотя бы один из элементов (на любом уровне вложенности) этого кортежа изменяемый тип (например список). Или я опять был не очень внимателен. В целом вы делаете очень хорошие видео с очень понятными объяснениями.
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Да, спасибо! Нет, этого не говорил. Пусть эта инфа останется в вашем комменте ) В принципе, очевидная вещь.
@user-st1vv6ji3d
@user-st1vv6ji3d Жыл бұрын
Дмитрий, очень глубокий и крайне полезный комментарий!!! И не соглашусь с Сергеем; то, о чем Вы пишите, вещь совсем не очевидная и обязательно должна быть четко обозначена в видео про кортежи, и не только здесь. На самом деле проблема в отсутствие полного и корректного определения Неизменяемости. Я просмотрел Лутца (5-е издание), на странице 134 такого определения нет! В корректном и полном определении Неизменяемости необходимо явным образом указать на : 1) связь между возможностью изменения элементов объекта и неизменностью ссылки (присваивания) на сам объект; 2) для составного объекта обязательным условием Неизменяемости является условие неизменяемости каждого!!! из его составных компонентов. Тогда мы приходим к пониманию, что числа и строки - это всегда Неизменяемые объекты, списки и словари - всегда Изменяемые, а кортеж - отдельный вид объектов, он может быть как Неизменяемым, так и Изменяемым объектом, и это все зависит от типа Неизменяемости каждого из его элементов "... на любом уровне вложенности". Для тех, у кого Python, первый язык программирования, это будет неочевидно. И получится, как с неправильно сросшимся переломом - сначала неправильно срастили, а потом надо ломать, чтобы срастить заново правильно! Как будто нельзя было сделать правильно с первого раза.
@dmitryzagorevskiy507
@dmitryzagorevskiy507 Жыл бұрын
@@user-st1vv6ji3dОлег, вы предложили очень хорошее определение. Я бы рекомендовал сделать его отдельным комментарием, это будет достаточно полезно для других пользователей.
@nataljamasharskih1514
@nataljamasharskih1514 2 жыл бұрын
Спасибо, очень понятно объясняете.
@thebaingames5636
@thebaingames5636 Жыл бұрын
Спасибо большое за курс по python, я стану лучше.
@user-xv7sh6lp7o
@user-xv7sh6lp7o 2 жыл бұрын
Спасибо!👍
@gayratsaidakhmedov5451
@gayratsaidakhmedov5451 7 ай бұрын
спасибо
@jamjam3337
@jamjam3337 Жыл бұрын
спасибо!👏👍
@nik01aich
@nik01aich Жыл бұрын
Нужно еще бы объяснить почему меняется ссылка на Bool, но не меняется для списка. Потому что Bool, как и Int, Float и т.д. неизменяемые типы и при "изменениии" создается новый объект, а как следствие меняется ссылка
@user-st1vv6ji3d
@user-st1vv6ji3d Жыл бұрын
Альтернативный взгляд на природу Кортежей и их назначение. 1. Разделяю то мнение, что Кортежи - это единственная в языке Python Статически типизированная коллекция объектов, или группа объектов (к изменяемым/неизменяемым типам данных Статическая типизация никакого отношения не имеет, это все о другом). 2. Если упрощенно, то Статическая типизация - это когда при инициализации объекта (Кортежа) происходит: 1) фиксация типа данных (строка, число, список и т. д.), размещаемых в каждом из полей кортежа; 2) фиксация порядка следования полей кортежа с соответствующими типами данных. 3. После инициализации кортежа не могут быть изменены: 1) ни порядок следования полей с данными; 2) ни тип данных в любом из полей. Все. 4. Именно Статическая типизация Кортежей самым логическим образом объясняет все, казалось бы «экзотические», свойства Кортежей, снимает кажущиеся противоречия изменяемые данные в неизменяемом объекте, и устанавливает над Кортежами допустимый набор методов (операций). 5. Только на основе Кортежей можно построить уникальную, для языка Python, конструкцию - набор Неизменяемых данных произвольного уровня вложения (такая конструкция - это набор вложенных друг в друга кортежей, все поля которых заполнены типами данных «число», «строка» или «булевы данные». 6. Только наличие в языке программирования Кортежей позволяет реализовать следующие механизмы: а) метод создания копии объекта изменяемого типа данных с произвольным количеством уровней вложений; б) механизм бесконфликтной передачи данных от объектов с изменяемым типом данных; в) и, собственно, создание многоуровневых вложенных конструкций с полностью неизменяемыми наборами данных (вложенные Кортежи, ключи для Словарей). Экономия памяти и увеличение скорости работы с кортежами - это все побочный результат Статистической типизации. В заключении. Наличие Именованных Кортежей позволяет построить конструкции из п.1)-п.3) для Словарей. Было бы очень хорошо, если бы Сергей нашел возможность или с помощью видео, или через ссылку, разъяснил механизм работы Именованных кортежей. Поскольку, в других источниках информации - полная неразбериха.
@user-ip2yx4hk3z
@user-ip2yx4hk3z 3 ай бұрын
голос приятный
@AndrewMakarskiy
@AndrewMakarskiy 8 ай бұрын
Учитель от бога. Отличные материалы для самостоятельного изучения! Только вот английский надо подтянуть, Сергей. Не тапл (tuple) а тьюпл, не кей (key) а ки и т.д.
@ostrov11
@ostrov11 2 жыл бұрын
пайтон это просто
@ibrahimoglu
@ibrahimoglu 2 жыл бұрын
👍
@dubinin_s
@dubinin_s 2 жыл бұрын
Подскажите, tuple.index(значение[, start[, stop]]) - start и stop в квадратных скобках - это такой метод записи необязательных параметров в документации? Я правильно понимаю, что если параметры отделяются квадратными скобками, то тот, который внутри скобок, необязателен после указания параметра, который вне скобок? И, соответственно, если где-то встретится такое - (значение[, start, stop]), это будет означать, что start и stop не обязательны, но если указал start, то будь добр укажи и stop, иначе шайтан интерпретатор будет сильно ругаться?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
да, верно
@dubinin_s
@dubinin_s 2 жыл бұрын
@@selfedu_rus спасибо
@Youtubbber
@Youtubbber 11 ай бұрын
Если указать Старт, то указывать Стоп не обязательно.
@Mika-yq5nr
@Mika-yq5nr 6 ай бұрын
2 года прошло, но в 16:45. Что если при добавлении в список элементов, произойдет перевыделение памяти для списка в другом участке памяти?
@selfedu_rus
@selfedu_rus 6 ай бұрын
не понял вопроса, но думаю, его лучше в ТГ-канал по Python задать
@light8032
@light8032 6 ай бұрын
При создании списка (как и для vector в c++) выделяется память больше необходимого, чтобы при добавлении новых элементов перевыделение памяти под них происходило реже. Но все-таки в случае переполнения памяти под список - память должна расширяться. В лучшем случае, если в том же месте, после списка, остался неиспользованный участок памяти, память под список расширяется на месте, т.е. ссылка на список не меняется. В худшем случае, программа должна найти свободный участок памяти, удовлетворяющий необходимым нам размерам списка и перезаписать список уже в тот участок. В этом случае ссылка списка изменится. Так, я по крайней мере знаю, может и ошибаюсь, устроено в C++ с vector и другими коллекциями и string. Меня интересует, если ссылки в кортеже не меняются, то как он будет реагировать на переполнение (и на возможно следствии изменения ссылки) одного из его изменяемых элементов. Весь кортеж перезапишется? Вопрос не из-за "блеснуть умом", а потому, что я сначала подумал, что любой кортеж можно использовать как ключ в словаре. Но в комментариях прочитал, что кортежи, к-ые содержат изменяемые элементы, не могут быть ключами. В любом случае, спасибо за обратную связь
@Kvas00k
@Kvas00k 3 ай бұрын
Не подскажите как ввести с Клавиатуры кортеж содержащий несколько числовых кортежей, через какую функцию ! Все беребрал не получается😢
@selfedu_rus
@selfedu_rus 3 ай бұрын
в ТГ-канале по Python спросите, вам там кучу вариантов накидают )
@lopytga
@lopytga Ай бұрын
Нормально питончик места кушает в оперативе
@dubinin_s
@dubinin_s 2 жыл бұрын
А ещё не известна примерная дата появления практических заданий?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
где-то через неделю
@locky1827
@locky1827 8 ай бұрын
У меня [1, 2, 3] равен 72 байта
@susenya
@susenya 6 ай бұрын
в видео версия пайтона 3.9.5
@SuperPrimus
@SuperPrimus 2 жыл бұрын
Не пойму один момент. Кортеж - это неизменяемый тип. Но конструкция a = a + (1, ) говорит о том, что кортеж "a" все же можно менять, раз мы добавили в него элемент. И если кортеж "a" будет использоваться как ключ словаря, то операция a = a + (1, ) изменит этот ключ .Поясните мне, где я заблуждаюсь
@selfedu_rus
@selfedu_rus 2 жыл бұрын
конструкция a = a + (1, ) создает новый кортеж с доплнительным элементом 1, прежний будет удален сборщиком мусора
@SuperPrimus
@SuperPrimus 2 жыл бұрын
@@selfedu_rus Спасибо за оперативный ответ. Только я не понял, что будет с кортежем-ключом словаря, если сборщик мусора его удалит после создания нового кортежа.
@selfedu_rus
@selfedu_rus 2 жыл бұрын
@@SuperPrimus если прежний кортеж используется, то не удалится
@SuperPrimus
@SuperPrimus 2 жыл бұрын
@@selfedu_rus но мы потеряем ссылку на прежний кортеж, переопределив переменную "а"
@selfedu_rus
@selfedu_rus 2 жыл бұрын
@@SuperPrimus останется ссылка от ключа словаря - это тоже ссылка на этот же (прежний) кортеж
@user-bm1yl7xi6l
@user-bm1yl7xi6l Жыл бұрын
а для чего нам кортеж из одного только элемента
@user-qz7pl7hq1p
@user-qz7pl7hq1p 3 ай бұрын
Ненавижу python console
Список и кортеж
37:46
Python Russian
Рет қаралды 4,3 М.
Самый Молодой Актёр Без Оскара 😂
00:13
Глеб Рандалайнен
Рет қаралды 8 МЛН
39kgのガリガリが踊る絵文字ダンス/39kg boney emoji dance#dance #ダンス #にんげんっていいな
00:16
💀Skeleton Ninja🥷【にんげんっていいなチャンネル】
Рет қаралды 8 МЛН
Cool Items! New Gadgets, Smart Appliances 🌟 By 123 GO! House
00:18
123 GO! HOUSE
Рет қаралды 17 МЛН
Sigma Kid Hair #funny #sigma #comedy
00:33
CRAZY GREAPA
Рет қаралды 32 МЛН
ТОП 5 Ошибок в написании функций Python
12:46
Python функции. Создание функций, области видимости, аргументы, return
34:10
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 8 М.
31 Множества в Python. Тип данных set
18:15
egoroff_channel
Рет қаралды 119 М.
Самый Молодой Актёр Без Оскара 😂
00:13
Глеб Рандалайнен
Рет қаралды 8 МЛН