Подтвердить что ты не робот

Для чего нужен кортеж?

Я изучаю Python для класса сейчас, и мы просто рассматривали кортежи как один из типов данных. Я прочитал на ней страницу Википедии, но я не мог понять, где такой тип данных будет полезен на практике. Могу ли я иметь несколько примеров, возможно, на Python, где необходим неизменный набор чисел? Как это отличается от списка?

4b9b3361

Ответ 1

  • Кортежи используются, когда вы хотите вернуть несколько результатов из функции.
  • Поскольку они неизменяемы, они могут использоваться как ключи для словаря (списки не могут).

Ответ 2

Кортежи делают хорошие словарные ключи, когда вам нужно объединить более одного фрагмента данных в ваш ключ и не хочется создавать класс для него.

a = {}
a[(1,2,"bob")] = "hello!"
a[("Hello","en-US")] = "Hi There!"

Я использовал эту функцию прежде всего для создания словаря с ключами, которые являются координатами вершин сетки. Однако в моем конкретном случае точное сравнение используемых поплавков работало нормально, что может не всегда быть истинным для ваших целей [в этом случае я, вероятно, конвертировал бы входящие поплавки в какое-то целое число с фиксированной запятой]

Ответ 3

Мне нравится это объяснение.

В принципе, вы должны использовать кортежи, когда есть постоянная структура (1-я позиция всегда содержит один тип значения, второй - и т.д.), а списки должны использоваться для списков однородных значений.

Конечно, всегда есть исключения, но это хорошая общая рекомендация.

Ответ 4

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

Ответ 5

Кортежи и списки имеют одинаковые виды использования в целом. Неизменяемые типы данных в целом имеют много преимуществ, в основном около concurrency.

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

Типичными примерами являются фиксированные данные в приложении, таком как подразделения компании, категории и т.д. Если эти данные изменяются, обычно один производитель восстанавливает кортеж.

Ответ 6

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

Я просто прочитал достойную дискуссию о том, как ограничить то, что вы можете сделать, чтобы создавать лучшие программы; Почему почему вопросы функционального программирования имеют значение

Ответ 7

Кортеж полезен для хранения нескольких значений. Поскольку вы отмечаете, что кортеж похож на список, который является неизменным - например, после создания вы не можете добавлять/удалять/заменять элементы.

Одно из преимуществ неизменности состоит в том, что, поскольку кортеж является фиксированным размером, он позволяет исполнению определенных оптимизаций. Это особенно полезно, если в контексте возвращаемого значения или параметра используется функция tupple.

Ответ 8

В дополнение к местам, где они синтаксически требуются, например, операция string% и для нескольких возвращаемых значений, я использую кортежи как форму легких классов. Например, предположим, что у вас есть объект, который передает непрозрачный файл cookie вызывающему из одного метода, который затем передается другому методу. Кортеж - это хороший способ упаковать несколько значений в этот куки файл без необходимости определять отдельный класс, чтобы их содержать.

Я стараюсь быть рассудительным в отношении этого конкретного использования. Если файлы cookie используются свободно во всем коде, лучше создать класс, потому что он помогает документировать их использование. Если они используются только в одном месте (например, одна пара методов), я могу использовать кортеж. В любом случае, так как это Python, вы можете начать с кортежа, а затем изменить его на экземпляр пользовательского класса без изменения кода в вызывающем.

Ответ 9

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

Кортеж представляет собой список значений, разделенных запятыми:

t = 'p', 'q', 'r', 's', 't'

хорошая практика заключить кортежи в круглые скобки:

t = ('p', 'q', 'r', 's', 't')