Квадратные скобки - это списки, а скобки - это кортежи .
Список является изменяемым, то есть вы можете изменить его содержимое:
>>> x =[1,2]>>> x.append(3)>>> x
[1,2,3]
пока кортежей нет
>>> x =(1,2)>>> x
(1,2)>>> x.append(3)Traceback(most recent call last):File"<stdin>", line 1,in<module>AttributeError:'tuple' object has no attribute 'append'
Другое основное отличие состоит в том, что кортеж является хэшируемым, что означает, что вы можете использовать его как ключ к словарю, помимо прочего. Например:
>>> x =(1,2)>>> y =[1,2]>>> z ={}>>> z[x]=3>>> z
{(1,2):3}>>> z[y]=4Traceback(most recent call last):File"<stdin>", line 1,in<module>TypeError: unhashable type:'list'
Обратите внимание, что, как отмечали многие люди, вы можете добавлять кортежи вместе. Например:
>>> x =(1,2)>>> x +=(3,)>>> x
(1,2,3)
Однако это не означает, что кортежи изменчивы . В приведенном выше примере новый кортеж создается путем сложения двух кортежей в качестве аргументов. Исходный кортеж не изменяется. Чтобы продемонстрировать это, рассмотрим следующее:
>>> x =(1,2)>>> y = x
>>> x +=(3,)>>> x
(1,2,3)>>> y
(1,2)
Принимая во внимание, что, если бы вы построили этот же пример со списком, yтакже будет обновлено:
>>> x =[1,2]>>> y = x
>>> x +=[3]>>> x
[1,2,3]>>> y
[1,2,3]
хорошие, но простые примеры, чтобы перечислить различия. Спасибо!
Доктор Эссен
8
Одно интересное отличие:
lst=[1]print lst // prints [1]print type(lst)// prints <type 'list'>
notATuple=(1)print notATuple // prints 1print type(notATuple)// prints <type 'int'>^^ instead of tuple(expected)
Запятая должна быть включена в кортеж, даже если она содержит только одно значение. например, (1,)вместо (1).
Спасибо. Это то, что я искал. Код, который я видел, имел (list1 + list2 + list3) и возвращал список, а не кортеж.
HuckIt
4
Это не списки, это список и кортеж. Вы можете прочитать о кортежах в руководстве по Python. Хотя вы можете изменять списки, это невозможно с кортежами.
In[1]: x =(1,2)In[2]: x[0]=3---------------------------------------------------------------------------TypeErrorTraceback(most recent call last)/home/user/<ipython console>in<module>()TypeError:'tuple' object does not support item assignment
(i for i in ...)
и[i for i in ...]
.Ответы:
Квадратные скобки - это списки, а скобки - это кортежи .
Список является изменяемым, то есть вы можете изменить его содержимое:
пока кортежей нет
Другое основное отличие состоит в том, что кортеж является хэшируемым, что означает, что вы можете использовать его как ключ к словарю, помимо прочего. Например:
Обратите внимание, что, как отмечали многие люди, вы можете добавлять кортежи вместе. Например:
Однако это не означает, что кортежи изменчивы . В приведенном выше примере новый кортеж создается путем сложения двух кортежей в качестве аргументов. Исходный кортеж не изменяется. Чтобы продемонстрировать это, рассмотрим следующее:
Принимая во внимание, что, если бы вы построили этот же пример со списком,
y
также будет обновлено:источник
Одно интересное отличие:
Запятая должна быть включена в кортеж, даже если она содержит только одно значение. например,
(1,)
вместо(1)
.источник
Это не списки, это список и кортеж. Вы можете прочитать о кортежах в руководстве по Python. Хотя вы можете изменять списки, это невозможно с кортежами.
источник
Другой способ отличия скобок и скобок заключается в том, что квадратные скобки могут описывать понимание списка, например
[x for x in y]
Принимая во внимание, что соответствующий скобочный синтаксис определяет генератор кортежа :
(x for x in y)
Вы можете получить понимание кортежа, используя:
tuple(x for x in y)
Смотрите: почему в Python нет понимания кортежей?
источник
Первый - это список, второй - кортеж. Списки изменчивы, кортежи - нет.
Взгляните на раздел « Структуры данных » руководства и раздел « Типы последовательностей » документации.
источник
Разделенные запятыми элементы, заключенные в
(
и)
являютсяtuple
s, те, которые заключены в[
и]
являютсяlist
s.источник
:P
(
и)
являютсяtuple
s, те заключены[
и]
являютсяlist
s.»