Ситуация с списком по сравнению с кортежем в Python

Есть ли ситуация, когда использование списка приводит к ошибке, и вместо этого вы должны использовать кортеж?

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

3 Solutions collect form web for “Ситуация с списком по сравнению с кортежем в Python”

Вы можете использовать кортежи как словарные ключи, потому что они неизменяемы, но вы не можете использовать списки. Например:

d = {(1, 2): 'a', (3, 8, 1): 'b'} # Valid. d = {[1, 2]: 'a', [3, 8, 1]: 'b'} # Error. 

Из-за их неизменной природы кортежи (в отличие от списков) хешируются . Это то, что позволяет кортежам быть ключами в словарях, а также членами наборов. Строго говоря, это их хешируемость, а не их неизменность.

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

 >>> hash((1, 2)) 3713081631934410656 >>> set([(1, 2), (2, 3, 4), (1, 2)]) set([(1, 2), (2, 3, 4)]) 

В строках форматирования кортежи являются обязательными:

 "You have %s new %s" % ('5', 'mails') # must be a tuple, not a list! 

Использование списка в этом примере приводит к ошибке «Недостаточно аргументов для строки формата», потому что список рассматривается как один аргумент. Странно, но верно.

  • В Python, почему в списке (Нет) есть ошибка, но нет?
  • python удаляет элементы списка из другого списка. С МНОЖЕСТВЕННЫМИ ВОЗВРАТАМИ элементов в обоих
  • Итерация над словарем python для извлечения только требуемых строк
  • Как проверить, присутствует ли индекс списка или нет
  • Как применить функцию zip к n-list
  • Итеративный поиск / замена из списка кортежей в Python
  • Как организовать три списка таким образом, чтобы сумма соответствующих элементов, если они больше, появляются сначала?
  • В каком случае я бы использовал кортеж в качестве словарного ключа?
  •  
    Interesting Posts for Van-Lav

    Есть ли у python безопасная, редактируемая пользователем сценария разметки для шаблонов, таких как жидкость RoR?

    Как запустить файл python, который считывается в std :: string, используя PyRun

    Попытка сбросить индексированную строку NaN в dataframe

    Запуск несистемного Python с virtualenv в 32-битном режиме на OS X

    Почему китайцы исказились при использовании webpy, но это нормально при использовании MySQLdb?

    Переключение экранов с движением в киви

    Использование pickle.dumps для хеш-изменяемых объектов

    Определение того, начинается ли строка с одного из префиксов переменной длины

    Как включить статический текст в StringVar () и все еще обновлять переменные?

    класс не определен, несмотря на импорт

    Расширение Numpy с помощью функции C

    Есть ли альтернатива для удаленного модуля 'nltk.model.NGramModel'?

    Python – Как получить начальный / базовый адрес процесса?

    Как использовать закрытую ручку в рабочей нити

    Абстрактные атрибуты в Python

    Python - лучший язык программирования в мире.