Nawiasy kwadratowe to listy, a nawiasy to krotki .
Lista jest zmienna, co oznacza, że możesz zmieniać jej zawartość:
>>> x =[1,2]>>> x.append(3)>>> x
[1,2,3]
podczas gdy krotki nie są:
>>> 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'
Inną główną różnicą jest to, że krotkę można mieszać, co oznacza, że można jej używać między innymi jako klucza do słownika. Na przykład:
>>> 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'
Zauważ, że jak zauważyło wiele osób, możesz dodać razem krotki. Na przykład:
>>> x =(1,2)>>> x +=(3,)>>> x
(1,2,3)
Nie oznacza to jednak, że krotki są zmienne . W powyższym przykładzie nowa krotka jest konstruowana przez dodanie dwóch krotek jako argumentów. Oryginalna krotka nie jest modyfikowana. Aby to zademonstrować, rozważ następujące kwestie:
>>> x =(1,2)>>> y = x
>>> x +=(3,)>>> x
(1,2,3)>>> y
(1,2)
Zważywszy, że gdybyś skonstruował ten sam przykład z listą, yrównież zostałby zaktualizowany:
>>> x =[1,2]>>> y = x
>>> x +=[3]>>> x
[1,2,3]>>> y
[1,2,3]
dobre, ale proste przykłady, aby wymienić różnice. Dzięki!
Dr. Essen
8
Jedna interesująca różnica:
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)
Krotka musi zawierać przecinek, nawet jeśli zawiera tylko jedną wartość. np. (1,)zamiast (1).
Dziękuję Ci. To jest to, czego szukałem. Kod, który widziałem, miał (list1 + list2 + list3) i zwrócił listę, a nie krotkę.
HuckIt
4
To nie są listy, to lista i krotka. O krotkach możesz przeczytać w samouczku Pythona. Chociaż możesz modyfikować listy, nie jest to możliwe w przypadku krotek.
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 ...)
a[i for i in ...]
.Odpowiedzi:
Nawiasy kwadratowe to listy, a nawiasy to krotki .
Lista jest zmienna, co oznacza, że możesz zmieniać jej zawartość:
podczas gdy krotki nie są:
Inną główną różnicą jest to, że krotkę można mieszać, co oznacza, że można jej używać między innymi jako klucza do słownika. Na przykład:
Zauważ, że jak zauważyło wiele osób, możesz dodać razem krotki. Na przykład:
Nie oznacza to jednak, że krotki są zmienne . W powyższym przykładzie nowa krotka jest konstruowana przez dodanie dwóch krotek jako argumentów. Oryginalna krotka nie jest modyfikowana. Aby to zademonstrować, rozważ następujące kwestie:
Zważywszy, że gdybyś skonstruował ten sam przykład z listą,
y
również zostałby zaktualizowany:źródło
Jedna interesująca różnica:
Krotka musi zawierać przecinek, nawet jeśli zawiera tylko jedną wartość. np.
(1,)
zamiast(1)
.źródło
To nie są listy, to lista i krotka. O krotkach możesz przeczytać w samouczku Pythona. Chociaż możesz modyfikować listy, nie jest to możliwe w przypadku krotek.
źródło
Innym sposobem, w jaki różnią się nawiasy i nawiasy, jest to, że nawiasy kwadratowe mogą opisywać składanie listy, np
[x for x in y]
Podczas gdy odpowiednia składnia nawiasów określa generator krotek :
(x for x in y)
Zrozumienie krotki można uzyskać za pomocą:
tuple(x for x in y)
Zobacz: Dlaczego w Pythonie nie ma rozumienia krotek?
źródło
Pierwsza to lista, druga to krotka. Listy są zmienne, krotki nie.
Zapoznaj się z sekcją Struktury danych w samouczku i sekcją Typy sekwencji w dokumentacji.
źródło
Elementy oddzielone przecinkami ujęte w
(
i)
sątuple
s, te ujęte w[
i]
sąlist
s.źródło
:P
(
i)
sątuple
s, te zawarte w[
i]
sąlist
s”.