Python: в чем разница между (1,2,3) и [1,2,3], и когда я должен использовать каждый?

голоса
44

Во многих местах, (1,2,3)и [1,2,3]могут быть использованы как взаимозаменяемые.

Когда я должен использовать один или другой, и почему?

Задан 05/08/2008 в 08:18
источник пользователем
На других языках...                            


15 ответов

голоса
19

Список [1,2,3] является динамичным и гибким, но эта гибкость прибывает по стоимости скорости.

Кортеж (1,2,3) является фиксированным (неизменяемым) и, следовательно, быстрее.

Ответил 05/08/2008 в 08:27
источник пользователем

голоса
31

Из FAQ Python :

Списки и кортежи, в то время во многом схож, как правило, используются в принципиально разных способах. Кортеж можно рассматривать как аналогичный Pascal записи или структуры C; они небольшие коллекции связанных данных, которые могут быть различных типов, которые эксплуатируются в качестве группы. Так, например, декартовых координат надлежащим образом представлена ​​в виде кортежа из двух или трех цифр.

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

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

Ответил 05/08/2008 в 14:22
источник пользователем

голоса
11

Кортежи быстрого \ гибкий способ для создания составных типов данных. Списки контейнеров для, хорошо, списки объектов.

Например, вы бы использовать список для хранения списка деталей студентов в классе.

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

`[(1,'Mark',86),(2,'John',34)...]`

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

Ответил 07/08/2008 в 12:21
источник пользователем

голоса
2

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

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

Ответил 08/08/2008 в 07:06
источник пользователем

голоса
1

Если вы можете найти решение, которое работает с кортежами, использовать их, так как она заставляет неизменность какого вида дисков вас вниз более функционального путем. Вы почти никогда не жалею спускаясь функционал / неизменный путь.

Ответил 08/08/2008 в 07:48
источник пользователем

голоса
3

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

Иначе, если я хочу иметь функцию, чтобы изменить значение, я использую список.

Всегда, если вы используете внешние библиотеки и нужно передать список значений в функцию и не уверены в целостности данных, используйте кортеж.

Ответил 15/08/2008 в 17:38
источник пользователем

голоса
7

Понятие кортежей очень выразительны:

  • С практической точки зрения, они прекрасно подходят для упаковки и распаковки значений ( x,y=coord).

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

    // PHP
    if (!isset($found[$x])) {
        $found[$x] = Array();
        $found[$x][$y] = true;
    } else if (!isset($found[$x][$y])) {
        $found[$x][$y] = true;
    }
    
    # Python
    found[(x,y)] = True # parens added for clarity
    
  • Списки должны использоваться с ожиданием операций над его содержимым (отсюда и различные упоминания о неизменности). Один захочет совать, толкать, сращивание, ломтик, поиск, вставить перед тем, вставить после, и т.д. со списком.

  • Кортежи должен быть представлением низкого уровня объекта, где производятся простые сравнения, или операций, таких как экстрагирование n-й элемент или элементы в п предсказуемым образом, такие, как, например координаты заданной ранее.

  • И, наконец, списки не hashable, поэтому тип отображения сделано со словарями (хэш-таблицей в Perl, ассоциативные массивы в PHP) должны быть сделаны с кортежами.

    Вот простой пример кортежей и словарей, а в прошлом:

    """
    couple is a tuple of two people
    doesLike is a dictionary mapping couples to True or False
    """
    couple = "john", "jane"
    doesLike = dict()
    doesLike[couple] = True
    doesLike["jane", "john"] = False # unrequited love :'(
    
Ответил 15/08/2008 в 19:00
источник пользователем

голоса
4

[1, 2, 3]список , в котором можно добавлять или удалять элементы.
(1, 2, 3)является кортеж , в котором когда - то определено, изменение не может быть сделано.

Ответил 25/06/2011 в 12:14
источник пользователем

голоса
1

[1,2,3] список.

(1,2,3) является кортежем и неизменны.

Ответил 08/10/2014 в 07:02
источник пользователем

голоса
2

открыть консоль и запустить питон. Попробуй это:

  >>> list = [1, 2, 3]     
  >>> dir(list)
    ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delsli
    ce__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getit
    em__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__',
     '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__r
    educe__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__'
    , '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 
'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

Как вы можете увидеть последний в списке последней строки имеют следующие методы: «Append», «счетчик», «простираться», «индекс», «вставить», «поп», «удалить», «обратный», «сортировки '

Теперь попробуйте то же самое для кортежа:

>>> tuple = (1, 2, 3)
>>> dir(tuple)
    ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__
    format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__get
    slice__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__
    lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__'
    , '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']

Только «граф» и «индекс» из методов списка появляется здесь.

Это потому, что кортежи неизменны, и они не поддерживают какие-либо изменений. Вместо этого они проще и быстрее во внутренней реализации.

Ответил 10/10/2015 в 19:30
источник пользователем

голоса
0

(1,2,3)является кортежем в то время как [1,2,3]список. Кортеж является непреложным объектом , а список изменчиво.

Ответил 19/02/2016 в 02:15
источник пользователем

голоса
0

(1,2,3)является кортеж и [1,2,3]список. Вы либо из этих двух представляете собой последовательность чисел , но обратите внимание , что кортежи неизменны и список являются изменяемыми объектами Python.

Ответил 27/06/2016 в 20:48
источник пользователем

голоса
2
  • Кортеж может представлять собой ключ в словаре, потому что неизменен.
  • Используйте списки, если у вас есть набор данных, который не требует произвольного доступа.
Ответил 20/05/2017 в 07:30
источник пользователем

голоса
1

(1,2,3) и [1,2,3] могут быть использованы взаимозаменяемо в редких условиях.

Таким образом, (1,2,3) является кортежем и неизменен. Любые изменения, которые вы хотите сделать необходимо перезаписать объект.

[1,2,3] представляет собой список, и элементы могут быть добавлены и удалены.

Список имеет больше возможностей, чем кортеж.

Ответил 31/03/2018 в 09:14
источник пользователем

голоса
0

(1,2,3) -кратных [1,2,3] -list списки изменяемые, на которых различные операции могут быть выполнены, тогда как кортежи неизменны, которые не могут быть extended.we не может добавлять, удалять или обновлять любой элемент из кортежа раз она создается.

Ответил 07/02/2019 в 10:03
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more