Lær Python List Data Structure - Del 1


Datastruktur er en samling av datatyper, forholdet mellom dem og funksjonene eller operasjonene som kan brukes på dataene. Datatypen kan være streng, heltall, flytende verdi og så videre.

  1. Objekter hvis tilstand kan endres når den er opprettet, som å legge til, oppdatere eller slette elementer.
  2. Lister, Dictionary, Set, bytearray er mutbare objekttyper i python.

  1. Objekttilstand kan ikke endres. Når objektet er opprettet, kan vi ikke legge til, fjerne eller oppdatere elementer.
  2. String, Integer, Tuples, Frozenset er noen av de uforanderlige objekttypene i python.

  1. Homogen datastruktur – Dataelementer vil være av samme datatype (f.eks: Array).
  2. Heterogen datastruktur – Dataelementer kan ikke være av samme datatype (f.eks. Liste, Tuples, Sets osv...).

Før vi forstår funksjonaliteten til den innebygde datastrukturen, la oss se noen få innebygde funksjoner som vil bli brukt med datastrukturobjekter.

  • dir(obj) – en innebygd funksjon som returnerer attributtet og metodene.
  • len(obj) – Returner lengden (antall elementer) til et objekt. Argumentet kan være en sekvens (som en streng, byte, tuppel, liste eller område) eller en samling (for eksempel en ordbok, sett eller frosset sett).
  • del – Dette innebygde nøkkelordet brukes til å slette et objekt fra et navneområde eller fjerne elementer fra et objekt som en liste, ordbok osv.
  • type(obj) – type()-funksjonen returnerer enten typen til objektet eller returnerer et nytt typeobjekt basert på argumentene som er sendt.
  • id() – Denne funksjonen returnerer «identiteten» til et objekt. Dette er et heltall som garantert er unikt og konstant for dette objektet i løpet av dets levetid.

Nå som du har sett noen viktige detaljer, la oss fortsette med python-datastrukturer.

Python kommer med innebygde datastrukturer i tillegg til at brukere kan definere sine egne datastrukturer. Den innebygde datastrukturen inkluderer LIST, DICTIONARY, TUPLE og SET. Noen av eksemplene for brukerdefinerte datastrukturer er STACK, QUEUES, TREE, HASHMAP, etc...

Folk som kommer fra andre programmeringsspråk vil være godt kjent med en array-type. Men i python er de ikke så vanlige.

Her ligner listen litt på en matrise, men listen lar oss lagre verdier av en hvilken som helst datatype (heterogen) mens matrise bare vil inneholde data av en bestemt type (int, float osv. ...). For å bruke array må du importere arrayet fra array-modulen eksplisitt.

I denne Python-artikkelserien skal vi se på hva som er en datastruktur og python innebygd datastruktur.

Liste er en datastruktur som er en samling av ulike datatyper. Hva betyr «innsamling av forskjellige datatyper» Liste kan lagre strenger, heltall, flytende kommaverdier, Nestet liste og så videre.

Listeobjekter er \mutable som betyr at elementer som er opprettet i listen kan åpnes, endres eller slettes. Listestøtteindeksering. Hvert element i listene er tilordnet en adresse, og den adressen kan brukes til å få tilgang til eller endre den bestemte elementverdien .

  • Opprett en liste
  • Sett inn/få tilgang til/endre liste
  • Slett liste

Liste kan lages ved hjelp av firkantede parenteser.

>>> name_empty = []			# Empty list
>>> name = ['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']	# list with string data type
>>> name_int = [1,2,3]			# list with Integer data type
>>> name_mixed = [name_int,name,1,2,3.14]	# list with nested list items.
>>> name_mixed
[[1, 2, 3], ['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will'], 1, 2, 3.14]
>>> name_int
[1, 2, 3]

Vi kan bruke innebygd type() funksjon for å sjekke objekttypen.

>>> type(name)

Vi kan få tilgang til metodene og attributtene til listeforekomsten ved å bruke funksjonen dir().

>>> dir(name)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

Vi kan finne ut det totale antallet elementer i listen ved å bruke len()-metoden.

>>> len(name)

Vi kan lage en ny liste fra en eksisterende liste ved å bruke list.copy() metoden.

>>> name_new = name.copy()
>>> name_new
['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']

Vi kan sette inn et element i en liste hvor som helst ved å bruke list.insert(i, x) metoden.

>>> name = ['Leo','Matt','Kane','Scott','Petter','Will']
>>> name
['Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name.insert(0,'Tom')	# Insert method takes 2 arguments (Index position, Item)
>>> name
['Tom', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']	# Tom is inserted at the 0th position.

Vi kan bruke metoden list.append(x) for å legge til et enkelt element i listen. Dette vil sette inn elementet til slutten av listen.

>>> name = []
>>> len(name)
0
>>> name.append('Leo')
>>> name.append('Matt')
>>> name.append('Kane')
>>> print(name)
['Leo', 'Matt', 'Kane']

Vi kan bruke metoden list.extend() for å legge til flere elementer i listen.

>>> new_name = ['Gowtham','Martin','Luis']
>>> name.extend(new_name)
>>> name
['Will', 'Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin', 'Luis']

Vi kan også bruke +-operatoren for å kombinere to lister. Begge listene kan være av forskjellige datatyper.

>>> a = [1,2,3]
>>> b = [2,3,3]
>>> c = a + b
>>> c
[1, 2, 3, 2, 3, 3]
>>> d = ['karthi','kenny']
>>> e = a + d
>>> e
[1, 2, 3, 'karthi', 'kenny']

Som allerede nevnt kan objekter endres. Et listeelement kan endres ved å referere til indeksposisjonen og tilordne verdi til det.

>>> name									# Before modified
['Tom', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name[0] = 'Karthi'
>>> name									# After Modified
['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']

Listen støtter både positiv og negativ indeksering.

Indeksering starter fra 0 og negativ indeksering starter fra -1.

Vi kan få tilgang til listeelementet ved å bruke deres indeksposisjon.

>>> name[0]			# Accessing the List item at index 0
'Leo'
>>> name[1]
'Matt'
>>> name[4]
'Petter'
>>> name[5]
'Will'
>>> name[-1]			# Accessing the list item with negative indexing
'Will'
>>> name[-6]
'Leo'

Vi kan også bruke skjæring for å få tilgang til elementene i listen. Slicing lar oss få tilgang til en rekke elementer ved å definere start-, slutt- og trinnparametere.

# SYNTAX: list[starting position, ending position, Step]

>>> name[0:3]
['Tom', 'Leo', 'Matt']
>>> name[:]
['Tom', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name[:4]
['Tom', 'Leo', 'Matt', 'Kane']
>>> name[:-2]
['Tom', 'Leo', 'Matt', 'Kane', 'Scott']
>>> name[:-1]
['Tom', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter']
>>> name[:-1:2]
['Tom', 'Matt', 'Scott']

Vi kan finne antall forekomster for en gitt verdi ved å bruke list.count(x) metoden.

>>> name_int = [1,1,2,3,1]
>>> name_int.count(1)
3

Vi kan finne indeksposisjonen til et gitt element ved å bruke metoden list.index(x[, start[, end]]).

>>> name			# Inserted ‘Will’ at the end of the list. Now we have 2 name ‘Will’.
['Will', 'Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will']
>>> name.index('Will)	# Returns the index position of first occurence of x.
0
>>> name.index('Will',2)	# Starting index positon’2’ is given.
7
>>> name.index('Will',2,4)	# Starting and Ending Index position is given. Since there is no 					occurence of ‘Will’ within the given search position it will throw 					Value Error.
Traceback (most recent call last):
File "<stdin>", line 1, in 
ValueError: 'Will' is not in list

Vi kan bruke metoden list.reverse() for å reversere elementene i listen.

>>> name
['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name.reverse()
>>> name
['Will', 'Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi']

Vi kan bruke metoden list.pop(x) for å fjerne et element fra en liste ved x-posisjon. Denne funksjonen vil fjerne elementet fra listen og vise det fjernede elementet. Hvis x ikke er spesifisert, vil pop()-metoden returnere det siste elementet fra listen.

>>> name
['Will', 'Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin', 'Luis']
>>> name.pop(0)
'Will'
>>> name
['Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin', 'Luis']
>>> name.pop()
'Luis'

Vi kan også bruke metoden list.remove (x) for å fjerne elementet fra listen. Her tar x verdien til elementet og kaster en ValueError hvis x ikke er i listen.

>>> name = ['Leo','Matt','Kane','Scott','Petter','Will']
>>> name.remove('Leo')
>>> name
['Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name.remove('Leo')
Traceback (most recent call last):
  File "", line 1, in 
ValueError: list.remove(x): x not in list

Vi kan gjøre en liste tom ved å enten tilordne listenavn til hakeparenteser eller bruke list.clear() metoden.

>>> name1 = name.copy()
>>> name1
['Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin']
>>> name
['Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin']
>>> name = []			
>>> name
[]
>>> name1.clear()		
>>> name1
[]

I stedet for å bruke listemetoder for å gjøre listen tom eller fjerne et element fra listen, kan vi bruke det innebygde nøkkelordet del for å utføre denne handlingen. Nøkkelordet del kan slette et listeobjekt fra minnet eller slette et element fra en liste eller slette et element fra en skive.

>>> name = ['Leo','Matt','Kane','Scott','Petter','Will']
>>> del name[0]
>>> name
['Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> del name[-3:]
>>> name
['Matt', 'Kane']
>>> del name[:]
>>> name
[]

Innebygd id()-funksjon returnerer \identiteten til et objekt. Dette er et heltall som garantert er unikt og konstant for dette objektet i løpet av dets levetid.

>>> id(name)
139979929658824
>>> del name
>>> id(name)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'name' is not defined

Merk: vi har fjernet listevariabelen fra minnet ved å bruke del(), derfor gir den navnefeil.

help() funtion:

Innebygd hjelpe function() er veldig nyttig for å få detaljer om et bestemt objekt eller metoder for det objektet.

help(object)
help(object.method)

Så langt i denne artikkelen har vi sett hvordan vi kan bruke en listedatastruktur til å lagre, få tilgang til, endre, slette listeobjekter ved å bruke listemetodene. Vi har også sett noen innebygde funksjoner som id(), dir(), type(), help() som er svært effektive funksjoner. Vi har også listeforståelse i python som gir en mer kortfattet og lesbar måte å lage en liste på.