Python: jaka jest różnica między (1,2,3) i [1,2,3], i kiedy należy użyć każdego?

głosy
44

W wielu miejscach, (1,2,3)i [1,2,3]mogą być stosowane zamiennie.

Kiedy należy użyć jednego lub drugiego, a dlaczego?

Utwórz 05/08/2008 o 08:18
źródło użytkownik
W innych językach...                            


15 odpowiedzi

głosy
19

Lista [1,2,3] jest dynamiczny i elastyczny, ale, że elastyczność jest w cenie prędkości.

Krotka (1,2,3) jest stała (niezmienna), a zatem szybciej.

Odpowiedział 05/08/2008 o 08:27
źródło użytkownik

głosy
31

Z Python FAQ :

Listy i krotki, natomiast podobne pod wieloma względami, są powszechnie stosowane w fundamentalnie różne sposoby. Krotki mogą być traktowane jako podobne do zapisów Pascal lub struktur C; są one małe zbiory powiązanych danych, które mogą być różnych typów, które są eksploatowane jako grupa. Na przykład, odpowiednio kartezjańskich współrzędnych jest przedstawiony jako krotka dwóch lub trzech cyfr.

Listy, z drugiej strony, są bardziej jak tablice w innych językach. Mają tendencję do posiadać różną liczbę obiektów, z których wszystkie mają ten sam typ i które są eksploatowane na jeden po drugim.

Ogólnie przyjętą konwencją nie wybrałby listy lub krotki tylko na podstawie jego zmienności (IM). wybrałbyś krotki dla małych zbiorów całkowicie różnych fragmentów danych, w której pełnowymiarową klasa byłaby zbyt dużej gramaturze oraz listę dla zbiorów jakiejkolwiek rozsądnej wielkości, gdzie trzeba jednorodny zestaw danych.

Odpowiedział 05/08/2008 o 14:22
źródło użytkownik

głosy
11

Krotki są szybkie \ elastyczny sposób tworzenia złożonych danych typów. Listy są pojemniki do, dobrze, wykazy obiektów.

Na przykład, należy użyć listy do przechowywania listy szczegółów student w klasie.

Każdy szczegół dla studentów w tym wykazie mogą być 3-krotka zawierająca swój numer, nazwę i rolki wynik testu.

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

Również dlatego, że krotki są niezmienne mogą być używane jako klucze w słownikach.

Odpowiedział 07/08/2008 o 12:21
źródło użytkownik

głosy
2

Jak wspominają inni, Listy i krotki są oba pojemniki, które mogą być używane do przechowywania obiektów Pythona. Listy są rozciągliwe i ich zawartość można zmienić w drodze cesji, z drugiej ręki krotki są niezmienne.

Ponadto, listy nie mogą być używane jako klucze w słowniku natomiast krotki możliwe.

Odpowiedział 08/08/2008 o 07:06
źródło użytkownik

głosy
1

Jeśli można znaleźć rozwiązanie, które współpracuje z krotek, z nich korzystać, ponieważ zmusza niezmienność jakiego rodzaju napędów na dół ścieżka bardziej funkcjonalne. Prawie nigdy żałować schodząc funkcjonalną / niezmienną drogą.

Odpowiedział 08/08/2008 o 07:48
źródło użytkownik

głosy
3

Za każdym razem muszę przechodzić w zbiorze elementów do funkcji, jeśli chcę funkcję nie zmieni wartości przekazywane w - używam krotki.

Else if chcę mieć funkcję do zmiany wartości, używam listę.

Zawsze jeśli używasz zewnętrznych bibliotek i trzeba przekazać w liście wartości do funkcji i nie ma pewności co do rzetelności danych, należy użyć krotki.

Odpowiedział 15/08/2008 o 17:38
źródło użytkownik

głosy
7

Pojęcie krotek są bardzo wyraziste:

  • Pragmatycznie, są idealne do pakowania i rozpakowywania wartości ( x,y=coord).

  • W połączeniu ze słownikami (tabele mieszania), pozwalają na formy mapowanie, które w przeciwnym razie wymagają wielu poziomów związku. Na przykład, należy rozważyć, że oznakowanie (x, y) zostały znalezione.

    // 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
    
  • Listy powinny być stosowane z oczekiwaniem operacji na jego zawartość (stąd różne wzmianki o niezmienności). Jeden z nich chce pop, Push, splot, plaster, wyszukiwanie, wstawić przed, po włożeniu, etc z listy.

  • Krotki należy przedstawienie niskiego poziomu obiektu, w którym jest przeprowadzane porównanie, bądź operacji, takich jak ekstrahowanie n'th element lub brak elementów w przewidywalny sposób, jak w przykładzie podanym na początku współrzędnych.

  • Wreszcie, listy nie są hashable, więc typ mapowania wykonane ze słowników (tabel mieszania w Perl, asocjacyjne tablice w PHP) muszą być wykonane z krotek.

    Oto prosty przykład krotek i słowników, razem w końcu:

    """
    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 :'(
    
Odpowiedział 15/08/2008 o 19:00
źródło użytkownik

głosy
4

[1, 2, 3]Jest to lista, w którym można dodać lub usunąć elementy.
(1, 2, 3)jest krotka, w którym, gdy określono, modyfikacja ta może być wykonana.

Odpowiedział 25/06/2011 o 12:14
źródło użytkownik

głosy
1

[1,2,3] Jest to lista.

(1,2,3) jest krotka i niezmienne.

Odpowiedział 08/10/2014 o 07:02
źródło użytkownik

głosy
2

Otwórz konsolę i uruchom Pythona. Spróbuj tego:

  >>> 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']

Jak można zobaczyć ostatni w ostatnim liście linii mają następujące metody: „Dołącz”, „hrabia”, „przedłużyć”, „indeks”, „wkładkę”, „pop”, „usuń”, „reverse”, „sortowania '

Teraz spróbuj to samo dla krotki:

>>> 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']

Tylko „count” i „index” z metodami lista pojawi się tutaj.

To dlatego, że krotki są niezmienne i nie obsługuje żadnych modyfikacji. Zamiast tego są one prostsze i szybsze w realizacji wewnętrznego.

Odpowiedział 10/10/2015 o 19:30
źródło użytkownik

głosy
0

(1,2,3)jest natomiast krotka [1,2,3]jest lista. Krotka jest niezmienny przedmiot podczas gdy lista jest zmienny.

Odpowiedział 19/02/2016 o 02:15
źródło użytkownik

głosy
0

(1,2,3)jest krotka i [1,2,3]znajduje się lista. Albo z dwóch stanowią sekwencje liczb należy jednak pamiętać, że krotki są niezmienne i lista są zmienne obiekty Pythona.

Odpowiedział 27/06/2016 o 20:48
źródło użytkownik

głosy
2
  • Krotka może stanowić klucz w słowniku, ponieważ jest niezmienna.
  • Użyj listy, jeśli masz zbiór danych, które nie potrzebują dostępu losowego.
Odpowiedział 20/05/2017 o 07:30
źródło użytkownik

głosy
1

(1,2,3) i [1,2,3], może być stosowane wymiennie w rzadkich przypadkach.

Tak (1,2,3) jest krotka i jest niezmienna. Wszelkie zmiany, które chcesz zrobić trzeba zastąpić obiekt.

[1,2,3] stanowi wykaz i elementy mogą być dołączone i usunięte.

Lista ma więcej funkcji niż krotki.

Odpowiedział 31/03/2018 o 09:14
źródło użytkownik

głosy
0

(1,2,3) -tuple [1,2,3] Lista -Lista są zmienne, na której różne operacje mogą być wykonywane podczas krotki są niezmienne, które nie mogą być extended.we nie można dodać, usunąć lub aktualizacji elementu z krotki raz jest on tworzony.

Odpowiedział 07/02/2019 o 10:03
źródło użytkownik

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