Python: hva er forskjellen mellom (1,2,3) og [1,2,3], og når skal jeg bruke hver?

stemmer
45

Mange steder, (1,2,3)og [1,2,3]kan brukes om hverandre.

Når bør jeg bruke det ene eller det andre, og hvorfor?

Publisert på 05/08/2008 klokken 07:18
kilden bruker
På andre språk...                            


15 svar

stemmer
31

Fra Python FAQ :

Lister og tupler, mens ligner på mange måter, er vanligvis brukes i fundamentalt forskjellige måter. Tupler kan betraktes som å være lik Pascal poster eller C structs; de er små samlinger av relaterte data som kan være av forskjellige typer som drives på som en gruppe. For eksempel, et kartesisk koordinatsystem er hensiktsmessig fremstilt som en tuppel på to eller tre tall.

Lister, derimot, er mer som arrays på andre språk. De har en tendens til å holde et varierende antall objekter som alle har samme type og som er operert på én etter én.

Vanligvis etter konvensjonen du ikke ville velge en liste eller en tuppel bare basert på sin (im) mutability. Du ville velge en tuppel for små samlinger av helt ulike deler av data som et fullverdig klassen ville være for tung, og en liste for samlinger av enhver rimelig størrelse der du har en homogen sett med data.

Svarte 05/08/2008 kl. 13:22
kilden bruker

stemmer
19

Listen [1,2,3]er dynamisk og fleksibel, men at fleksibiliteten kommer med en hastighet pris.

Tuppel (1,2,3)er fast (uforanderlig) og derfor raskere.

Svarte 05/08/2008 kl. 07:27
kilden bruker

stemmer
11

Tupler er en rask \ fleksibel måte for å skape sammensatte datatyper. Lister er beholdere for, vel, lister over gjenstander.

For eksempel, ville du bruke en liste for å lagre en liste over student detaljer i en klasse.

Hver student detalj i denne listen kan være et 3-tuppel inneholder deres roll nummer, navn og test score.

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

Også fordi tupler er uforanderlige de kan brukes som nøkler i ordbøker.

Svarte 07/08/2008 kl. 11:21
kilden bruker

stemmer
7

Oppfatningen av tupler er svært uttrykks:

  • Pragmatisk, de er gode for pakking og utpakking verdier ( x,y=coord).

  • I kombinasjon med ordbøker (hash tabeller), at de former for kartlegging som ellers ville kreve mange nivåer av krets. For eksempel vurdere merking som (x, y) er funnet.

    // 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
    
  • Lister bør brukes med forventning om operasjoner på innholdet (derav ulike nevner av uforanderlighet). Vil ønske å pop, push, spleise, skive, søk, sett før, setter etter, etc med en liste.

  • Tupler bør være et lav-nivå representasjon av et objekt, hvor enkle sammenligninger er gjort, eller slike operasjoner som å ekstrahere den n'te element eller n elementer i en forutsigbar måte, som for eksempel koordinater eksempelet gitt tidligere.

  • Til slutt, lister er ikke hashable, så den type kartlegging gjort med ordbøker (hash tabeller i Perl, assosiative matriser i PHP) må gjøres med tupler.

    Her er et enkelt eksempel på tupler og ordbøker, sammen ved siste:

    """
    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 :'(
    
Svarte 15/08/2008 kl. 18:00
kilden bruker

stemmer
4

[1, 2, 3]er en liste der man kan legge til eller slette elementer.
(1, 2, 3)er en tuppel som en gang er definert, kan modifikasjonen ikke gjøres.

Svarte 25/06/2011 kl. 11:14
kilden bruker

stemmer
3

Når jeg trenger å passere i en samling av elementer til en funksjon, hvis jeg vil at funksjonen skal ikke endre verdiene vedtatt i - jeg bruker tupler.

Annet hvis jeg vil ha en funksjon for å endre verdiene, bruker jeg listen.

Alltid hvis du bruker eksterne biblioteker og trenger å passere i en liste med verdier til en funksjon, og er usikker på om integriteten til data, bruk en tuppel.

Svarte 15/08/2008 kl. 16:38
kilden bruker

stemmer
2
  • En tuppel kan representere en nøkkel i ordboken, fordi det er uforanderlige.
  • Bruke lister hvis du har en samling av data som ikke trenger random access.
Svarte 20/05/2017 kl. 07:30
kilden bruker

stemmer
2

åpne en konsoll og kjøre python. Prøv dette:

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

Som du kan se den siste på den siste linjen listen har følgende metoder: 'append', 'count', 'forlenge', 'index', 'insert', 'pop', 'fjerne', 'omvendt', 'liksom '

Nå kan du prøve det samme for tuppel:

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

Bare 'count' og 'index' fra listen metoder vises her.

Dette er fordi tupler er uforanderlig, og de støtter ikke noen endringer. I stedet de er enklere og raskere i intern gjennomføring.

Svarte 10/10/2015 kl. 19:30
kilden bruker

stemmer
2

Som andre har nevnt, lister og tupler er begge beholdere som kan brukes til å lagre python stedene. Lister er utvidbar og innholdet kan endres ved tildeling, på den annen side tuples er uforanderlig.

Dessuten kan lister ikke brukes som nøkler i en ordbok, mens tupler kan.

Svarte 08/08/2008 kl. 06:06
kilden bruker

stemmer
1

(1,2,3) og [1,2,3] kan brukes om hverandre i sjeldne tilfeller.

Så (1,2,3) er en tuppel og er uforanderlig. Eventuelle endringer du ønsker å gjøre trenger å overskrive objektet.

[1,2,3] er en liste og elementer kan legges til og fjernes.

List har flere funksjoner enn en tuppel.

Svarte 31/03/2018 kl. 09:14
kilden bruker

stemmer
1

[1,2,3] er en liste.

(1,2,3) er en tuppel og uforanderlig.

Svarte 08/10/2014 kl. 06:02
kilden bruker

stemmer
1

Hvis du kan finne en løsning som fungerer med tupler, bruke dem, så det tvinger uforanderlighet hva slags driver deg ned en mer funksjonell bane. Du nesten aldri angre går ned den funksjonelle / uforanderlige banen.

Svarte 08/08/2008 kl. 06:48
kilden bruker

stemmer
0

(1,2,3) -tuple [1,2,3] -List lister er foranderlig på hvilken forskjellige operasjoner kan utføres mens tuppeler er uforanderlig som ikke kan være extended.we ikke kan legge til, slette eller oppdatere en hvilken som helst element fra en tuppel gang den er opprettet.

Svarte 07/02/2019 kl. 10:03
kilden bruker

stemmer
0

(1,2,3)er en tuppel og [1,2,3]er en liste. Du enten av de to representerer sekvenser av tall, men merk at tupler er uforanderlige og liste er foranderlig Python stedene.

Svarte 27/06/2016 kl. 20:48
kilden bruker

stemmer
0

(1,2,3)er et tuppel, mens [1,2,3]en liste. En tuppel er et uforanderlig objekt mens en liste er foranderlig.

Svarte 19/02/2016 kl. 02:15
kilden bruker

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