Python Development
Александр Вотин, Backend developer · 19.10
Кортежи против списков. Почему кортежи быстрее
Ты, возможно, замечал, что кортежи (tuple) работают быстрее, чем списки (list). Но с виду они такие похожие — и те, и другие хранят несколько элементов.
Кортежи неизменяемы (immutable), а списки изменяемы (mutable). Это значит, что элементы кортежа нельзя менять после его создания, а вот со списками можно делать что угодно, добавлять, удалять и изменять элементы. Из-за этого у списков есть дополнительная «нагрузка» — им нужно хранить данные о том, как управлять изменениями. Например, списки выделяют больше памяти, чтобы можно было быстро добавлять новые элементы. Кортежам же не нужно тратить ресурсы на такие операции, что делает их легче и быстрее.
Кортежи занимают меньше памяти, так как они неизменяемы и не нуждаются в дополнительных механизмах для изменения размера или структуры. Это значит, что кортежи требуют меньше операций на уровне системы, когда дело касается выделения или управления памятью.
Поскольку кортежи фиксированы, Python может оптимизировать работу с ними на уровне машинного кода. Это делает их немного быстрее при обращении к элементам, поскольку не нужно учитывать возможные изменения структуры данных.
Используй кортежи, если ты знаешь, что данные не будут изменяться. Это ускорит работу программы и сэкономит память. Используй списки, если данные могут изменяться (добавление, удаление, изменение элементов).
Давай посмотрим на простой пример, где создаем список и кортеж с одинаковыми данными и измерим время доступа к элементам. Этот код показывает, что доступ к элементам кортежа происходит немного быстрее, чем к элементам списка, хотя разница может быть незначительной на малых объёмах данных. Но на больших объёмах — это сэкономит драгоценные миллисекунды.
еще контент автора
еще контент автора
Python Development
Александр Вотин, Backend developer · 19.10
войдите, чтобы увидеть
и подписаться на интересных профи