Python: Разница между кортежем и списком
От: Аноним  
Дата: 26.02.09 13:21
Оценка:
Ну, то есть, разница известна: кортеж (он же "тупель", набор сущностей, разделенных запятыми, помещенный — не всегда — в круглые скобки) есть неизменяемая последовательность, элементам которой нельзя присваивать новое значение, а список (он же "лист", в квадратных скобках) — изменяемая последовательность. Но что из этого следует? Применение кортежа "дешевле" (быстрее доступ на чтение, ит.п.)? Или нет? Когда предпочтительнее использовать кортеж?
Re: Python: Разница между кортежем и списком
От: SergH Россия  
Дата: 26.02.09 13:22
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Ну, то есть, разница известна: кортеж (он же "тупель", набор сущностей, разделенных запятыми, помещенный — не всегда — в круглые скобки) есть неизменяемая последовательность, элементам которой нельзя присваивать новое значение, а список (он же "лист", в квадратных скобках) — изменяемая последовательность. Но что из этого следует? Применение кортежа "дешевле" (быстрее доступ на чтение, ит.п.)? Или нет? Когда предпочтительнее использовать кортеж?


Список не может быть ключём в словаре.
Делай что должно, и будь что будет
Re: Python: Разница между кортежем и списком
От: DOOM Россия  
Дата: 26.02.09 13:46
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Ну, то есть, разница известна: кортеж (он же "тупель", набор сущностей, разделенных запятыми, помещенный — не всегда — в круглые скобки) есть неизменяемая последовательность, элементам которой нельзя присваивать новое значение, а список (он же "лист", в квадратных скобках) — изменяемая последовательность. Но что из этого следует? Применение кортежа "дешевле" (быстрее доступ на чтение, ит.п.)? Или нет? Когда предпочтительнее использовать кортеж?


Так для чего же нужны кортежи?

Работа с кортежами быстрее, чем со списками. Если вы определяете постоянный набор значений, и все, что вы хотите с ним когда-либо делать, это перебирать его элементы, используйте кортеж вместо списка.
Помните, я сказал, что в качестве ключей словаря могут выступать числа, строки и объекты “некоторых других типов”? Кортежи могут быть ключами словаря, а списки нет.[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...

Никогда не слышал.
Re[3]: Python: Разница между кортежем и списком
От: DOOM Россия  
Дата: 26.02.09 14:01
Оценка:
Здравствуйте, Аноним, Вы писали:

DOO>>А еще хрестоматийный пример с циклом for...

А>Никогда не слышал.

Подумав еще я понял, что не о том говорю
Я про list vs функция range в циклах for в питоне.
Re[3]: Python: Разница между кортежем и списком
От: haba_haba_haba Россия  
Дата: 26.02.09 14:03
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, SergH, Вы писали:


SH>>Список не может быть ключём в словаре.


А>Честно говоря, слабо представляю себе необходимость использования списка или кортежа в качестве ключа.


"Двумерные" (n-мерные) массивы?
arr = {}
arr[(0, 0)] = 1
arr[(0, 1)] = 2
arr[(0, 2)] = 3
Re[4]: Python: Разница между кортежем и списком
От: Аноним  
Дата: 26.02.09 14:19
Оценка:
Здравствуйте, haba_haba_haba, Вы писали:

__>"Двумерные" (n-мерные) массивы?

arr = {}
arr[(0, 0)] = 1
arr[(0, 1)] = 2
arr[(0, 2)] = 3


Да вообще-то для организации n-мерных массивов такие извраты не требуются, потому как элемент списка или кортежа сам может быть списком или кортежом. Я уж даже не говорю про библиотеки array и numpy, где все это реализовано.
Re[5]: Python: Разница между кортежем и списком
От: haba_haba_haba Россия  
Дата: 26.02.09 15:48
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, haba_haba_haba, Вы писали:


__>>"Двумерные" (n-мерные) массивы?

А>
А>arr = {}
А>arr[(0, 0)] = 1
А>arr[(0, 1)] = 2
А>arr[(0, 2)] = 3
А>


А>Да вообще-то для организации n-мерных массивов такие извраты не требуются, потому как элемент списка или кортежа сам может быть списком или кортежом.

Ну тогда, для организации сильно разреженных n-мерных массивов?

А>Я уж даже не говорю про библиотеки array и numpy, где все это реализовано.

Это хорошо, что там это все реализовано.
Кстати, зачем array, если в numpy все это реализовано? Ну и наоборот?
Re[3]: Python: Разница между кортежем и списком
От: jhfrek Россия  
Дата: 27.02.09 07:20
Оценка:
Здравствуйте, Аноним, Вы писали:

SH>>Список не может быть ключём в словаре.

А>Честно говоря, слабо представляю себе необходимость использования списка или кортежа в качестве ключа.

а как же базы данных?

поставщик = [("Петя", "Москва"), ("Вася", "Питер")]
поставка = {("Петя", "Москва"):"молотки", ("Вася", "Питер"):"ломы"}
Re[4]: Python: Разница между кортежем и списком
От: Аноним  
Дата: 27.02.09 07:32
Оценка:
Здравствуйте, 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(), а вот порядок перебора списка или кортежа всегда известен. Кажется так.
Re: Python: Разница между кортежем и списком
От: FR  
Дата: 01.03.09 05:10
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Ну, то есть, разница известна: кортеж (он же "тупель", набор сущностей, разделенных запятыми, помещенный — не всегда — в круглые скобки) есть неизменяемая последовательность, элементам которой нельзя присваивать новое значение, а список (он же "лист", в квадратных скобках) — изменяемая последовательность. Но что из этого следует? Применение кортежа "дешевле" (быстрее доступ на чтение, ит.п.)? Или нет? Когда предпочтительнее использовать кортеж?


Гвидо, тайный (ну не совсем ) поклоник функциональных языков. Кортежи он утянул оттуда, там они в статически типипзированных языках более осмысленны и малозаменимы, так как списки там состят только из однородных элементов. Хотя в питоне кортежи тоже весьма удобны когда надо возвращать — принимать из функций несколько значений:
x, y = CalcCoord(Point1, (0, 0), Point2)
Re[2]: Python: Разница между кортежем и списком
От: Кодёнок  
Дата: 01.03.09 09:06
Оценка:
Здравствуйте, FR, Вы писали:

FR>x, y = CalcCoord(Point1, (0, 0), Point2)


Список тоже можно так распаковать.
Re[3]: Python: Разница между кортежем и списком
От: Кодёнок  
Дата: 01.03.09 09:07
Оценка:
Здравствуйте, Аноним, Вы писали:

А>И изменять тоже не собираюсь — она заполняется при присвоении и далее только читается. Означает ли это, что в этой ситуации предпочтительнее использовать кортеж, чем список? Или с точки зрения скорости, памяти ит.п. разницы нет?


Предпочтительнее кортеж, т.к. его нельзя случайно изменить и нагадить тем самым всей программе.
Re[3]: Python: Разница между кортежем и списком
От: FR  
Дата: 02.03.09 06:19
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>Список тоже можно так распаковать.


Ну тут опять вылазит динамичность и тотальная обобщеность питона, распоковка кортежа частный
случай sequence unpacking и соответственно любая последовательность может распоковыватся,
например:
x, y = {1:"first", 2:"second"}
Re[4]: Python: Разница между кортежем и списком
От: Аноним  
Дата: 02.03.09 07:12
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>Предпочтительнее кортеж, т.к. его нельзя случайно изменить и нагадить тем самым всей программе.


ИМХО, такой подход скорее характерен для C++ — там считается хорошим тоном повсюду использовать const именно чтобы избежать случайных изменений, а pythoniac — полагаться на "хороший стиль".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.