Ну, то есть, разница известна: кортеж (он же "тупель", набор сущностей, разделенных запятыми, помещенный — не всегда — в круглые скобки) есть неизменяемая последовательность, элементам которой нельзя присваивать новое значение, а список (он же "лист", в квадратных скобках) — изменяемая последовательность. Но что из этого следует? Применение кортежа "дешевле" (быстрее доступ на чтение, ит.п.)? Или нет? Когда предпочтительнее использовать кортеж?
Здравствуйте, Аноним, Вы писали:
А>Ну, то есть, разница известна: кортеж (он же "тупель", набор сущностей, разделенных запятыми, помещенный — не всегда — в круглые скобки) есть неизменяемая последовательность, элементам которой нельзя присваивать новое значение, а список (он же "лист", в квадратных скобках) — изменяемая последовательность. Но что из этого следует? Применение кортежа "дешевле" (быстрее доступ на чтение, ит.п.)? Или нет? Когда предпочтительнее использовать кортеж?
Здравствуйте, Аноним, Вы писали:
А>Ну, то есть, разница известна: кортеж (он же "тупель", набор сущностей, разделенных запятыми, помещенный — не всегда — в круглые скобки) есть неизменяемая последовательность, элементам которой нельзя присваивать новое значение, а список (он же "лист", в квадратных скобках) — изменяемая последовательность. Но что из этого следует? Применение кортежа "дешевле" (быстрее доступ на чтение, ит.п.)? Или нет? Когда предпочтительнее использовать кортеж?
Так для чего же нужны кортежи?
Работа с кортежами быстрее, чем со списками. Если вы определяете постоянный набор значений, и все, что вы хотите с ним когда-либо делать, это перебирать его элементы, используйте кортеж вместо списка.
Помните, я сказал, что в качестве ключей словаря могут выступать числа, строки и объекты “некоторых других типов”? Кортежи могут быть ключами словаря, а списки нет.[2]
Как мы скоро увидим, кортежи используются для получения форматированного представления.
(c) Вглубь языка Python.
А еще хрестоматийный пример с циклом for...
Re[2]: Python: Разница между кортежем и списком
От:
Аноним
Дата:
26.02.09 13:50
Оценка:
Здравствуйте, SergH, Вы писали:
SH>Список не может быть ключём в словаре.
Честно говоря, слабо представляю себе необходимость использования списка или кортежа в качестве ключа. Я не об этом хотел иметь в виду ((С) прапорщик Задов). Вот у меня допустим есть некая переменная (возможно, глобальная), содержащая предопределенный список чего-то-там. Я не планирую ее использовать в качестве ключа. И изменять тоже не собираюсь — она заполняется при присвоении и далее только читается. Означает ли это, что в этой ситуации предпочтительнее использовать кортеж, чем список? Или с точки зрения скорости, памяти ит.п. разницы нет?
Re[2]: Python: Разница между кортежем и списком
От:
Аноним
Дата:
26.02.09 13:56
Оценка:
Здравствуйте, DOOM, Вы писали:
Так для чего же нужны кортежи?
Работа с кортежами быстрее, чем со списками. Если вы определяете постоянный набор значений, и все, что вы хотите с ним когда-либо делать, это перебирать его элементы, используйте кортеж вместо списка.
Помните, я сказал, что в качестве ключей словаря могут выступать числа, строки и объекты “некоторых других типов”? Кортежи могут быть ключами словаря, а списки нет.[2]
Как мы скоро увидим, кортежи используются для получения форматированного представления.
(c) Вглубь языка Python.
Об этом я и думал. Только почему-то в мануале про это ни звука.
DOO>А еще хрестоматийный пример с циклом for...
Никогда не слышал.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, SergH, Вы писали:
SH>>Список не может быть ключём в словаре.
А>Честно говоря, слабо представляю себе необходимость использования списка или кортежа в качестве ключа.
Да вообще-то для организации n-мерных массивов такие извраты не требуются, потому как элемент списка или кортежа сам может быть списком или кортежом. Я уж даже не говорю про библиотеки array и numpy, где все это реализовано.
А>Да вообще-то для организации n-мерных массивов такие извраты не требуются, потому как элемент списка или кортежа сам может быть списком или кортежом.
Ну тогда, для организации сильно разреженных n-мерных массивов?
А>Я уж даже не говорю про библиотеки array и numpy, где все это реализовано.
Это хорошо, что там это все реализовано.
Кстати, зачем array, если в numpy все это реализовано? Ну и наоборот?
Здравствуйте, Аноним, Вы писали:
SH>>Список не может быть ключём в словаре. А>Честно говоря, слабо представляю себе необходимость использования списка или кортежа в качестве ключа.
Здравствуйте, jhfrek, Вы писали:
J>а как же базы данных?
J>поставщик = [("Петя", "Москва"), ("Вася", "Питер")] J>поставка = {("Петя", "Москва"):"молотки", ("Вася", "Питер"):"ломы"}
Ну, если бы передо мной стояла задача организовать БД на Удаффе, я бы взял готовое решение, например, Беркли — их есть, кажется даже в стандартной библиотеке.
Re[6]: Python: Разница между кортежем и списком
От:
Аноним
Дата:
27.02.09 07:42
Оценка:
Здравствуйте, haba_haba_haba, Вы писали:
Ну тогда, для организации сильно разреженных n-мерных массивов?
Вроде и на это есть готовая библиотека какая-то...
__>Кстати, зачем array, если в numpy все это реализовано? Ну и наоборот?
array входит в стандартную библиотеку, а numpy/scipy — отдельная вещь, основанная на Lapack, соответственно, возможности побогаче, ну там всякие мат. операции, скорость получше ит.п. Хотя утверждать не буду, я работал с numpy, а array только "просмотрел по диагонали".
Вообще, ИМХО, использование словаря для имитации массива не есть хорошая идея, т.к. порядок перебора элементов в словаре оператором in вроде как произвольный, равно и как порядок ключей словаря, возвращаемых методом keys(), а вот порядок перебора списка или кортежа всегда известен. Кажется так.
Здравствуйте, Аноним, Вы писали:
А>Ну, то есть, разница известна: кортеж (он же "тупель", набор сущностей, разделенных запятыми, помещенный — не всегда — в круглые скобки) есть неизменяемая последовательность, элементам которой нельзя присваивать новое значение, а список (он же "лист", в квадратных скобках) — изменяемая последовательность. Но что из этого следует? Применение кортежа "дешевле" (быстрее доступ на чтение, ит.п.)? Или нет? Когда предпочтительнее использовать кортеж?
Гвидо, тайный (ну не совсем ) поклоник функциональных языков. Кортежи он утянул оттуда, там они в статически типипзированных языках более осмысленны и малозаменимы, так как списки там состят только из однородных элементов. Хотя в питоне кортежи тоже весьма удобны когда надо возвращать — принимать из функций несколько значений:
Здравствуйте, Аноним, Вы писали:
А>И изменять тоже не собираюсь — она заполняется при присвоении и далее только читается. Означает ли это, что в этой ситуации предпочтительнее использовать кортеж, чем список? Или с точки зрения скорости, памяти ит.п. разницы нет?
Предпочтительнее кортеж, т.к. его нельзя случайно изменить и нагадить тем самым всей программе.
Здравствуйте, Кодёнок, Вы писали:
Кё>Список тоже можно так распаковать.
Ну тут опять вылазит динамичность и тотальная обобщеность питона, распоковка кортежа частный
случай sequence unpacking и соответственно любая последовательность может распоковыватся,
например:
x, y = {1:"first", 2:"second"}
Re[4]: Python: Разница между кортежем и списком
От:
Аноним
Дата:
02.03.09 07:12
Оценка:
Здравствуйте, Кодёнок, Вы писали:
Кё>Предпочтительнее кортеж, т.к. его нельзя случайно изменить и нагадить тем самым всей программе.
ИМХО, такой подход скорее характерен для C++ — там считается хорошим тоном повсюду использовать const именно чтобы избежать случайных изменений, а pythoniac — полагаться на "хороший стиль".