Lær Python List Datastruktur - Del 1


Datastruktur er en samling af datatyper, forholdet mellem dem og de funktioner eller operationer, der kan anvendes på dataene. Datatypen kan være streng, heltal, flydende værdi og så videre.

  1. Objekter, hvis tilstand kan ændres, når den oprettes, f.eks. tilføjelse, opdatering eller sletning af elementer.
  2. Lister, ordbog, sæt, bytearray er ændrede objekttyper i python.

  1. Objekttilstand kan ikke ændres. Når objektet er oprettet, kan vi ikke tilføje, fjerne eller opdatere elementer.
  2. String, Integer, Tuples, Frozenset er nogle af de uforanderlige objekttyper i python.

  1. Homogen datastruktur - Dataelementer vil være af samme datatype (f.eks. Array).
  2. Heterogen datastruktur - Dataelementer er muligvis ikke af samme datatype (f.eks. liste, tupler, sæt osv ...).

Før vi forstår funktionaliteten i den indbyggede datastruktur, skal vi se et par indbyggede funktioner, der vil blive brugt med datastrukturobjekter.

  • dir (obj) - en indbygget funktion, der returnerer attributten og metoderne.
  • len (obj) - Returner længden (antallet af varer) på et objekt. Argumentet kan være en sekvens (såsom en streng, bytes, tuple, liste eller rækkevidde) eller en samling (såsom en ordbog, et sæt eller et frossent sæt).
  • del - Dette indbyggede nøgleord bruges til at slette et objekt fra et navneområde eller fjerne emner fra et objekt som en liste, ordbog osv.
  • type (obj) - Funktionen type () returnerer enten objekttypen eller returnerer et nyt typeobjekt baseret på de argumenter, der er sendt.
  • id () - Denne funktion returnerer et "objekts" identitet. Dette er et heltal, der garanteret er unikt og konstant for dette objekt i dets levetid.

Nu som du har set få vigtige detaljer, lad os fortsætte med python-datastrukturer.

Python leveres med indbyggede datastrukturer såvel som brugere kan definere deres egne datastrukturer. Den indbyggede datastruktur inkluderer LIST, DICTIONARY, TUPLE og SET. Nogle af eksemplerne til brugerdefinerede datastrukturer er STACK, QUEUES, TREE, HASHMAP osv ...

Folk, der kommer fra andre programmeringssprog, vil være meget fortrolige med en matrixtype. Men i python er de ikke så almindelige.

Her ligner listen slags en matrix, men listen giver os mulighed for at gemme værdier af enhver datatype (heterogen), mens array kun indeholder data af en bestemt type (int, float osv ...). For at bruge array skal du importere arrayet fra "array" -modulet eksplicit.

I denne Python-serie af artikler vil vi se på, hvad der er en datastruktur og indbygget python-datastruktur.

Liste er en datastruktur, som er en samling af forskellige datatyper. Hvad betyder "indsamling af forskellige datatyper"? Liste kan gemme strenge, heltal, værdier for flydende punkter, indlejret liste og så videre.

Listeobjekter er "mutable", hvilket betyder, at elementer, der er oprettet inde i listen, kan tilgås, ændres eller slettes. Listeindeksering af support. Hvert element på listerne tildeles en adresse, og den adresse kan bruges til at få adgang til eller ændre den bestemte elementværdi.

  • Opret en liste
  • Indsæt/adgang/rediger liste
  • Slet liste

Liste kan oprettes ved hjælp af 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 bruge den indbyggede funktion type () til at kontrollere objekttypen.

>>> type(name)

Vi kan få adgang til metoderne og attributterne for listeforekomsten ved hjælp af dir () -funktionen.

>>> 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 finde ud af det samlede antal varer på listen ved hjælp af len () -metoden.

>>> len(name)

Vi kan oprette en ny liste fra en eksisterende liste ved hjælp af list.copy () -metoden.

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

Vi kan indsætte et element i en liste på enhver position ved hjælp af 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 bruge metoden list.append (x) til at føje et enkelt element til listen. Dette indsætter elementet i slutningen af listen.

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

Vi kan bruge list.extend () -metoden til at tilføje flere elementer til 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å bruge operatoren '+' til at kombinere to lister. Begge listen kan være af forskellige 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 nævnt kan lister genstande ændres. Et listeelement kan ændres ved at referere til indekspositionen og tildele det værdi.

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

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

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

Vi kan få adgang til listeelementet ved hjælp af deres indeksposition.

>>> 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å bruge udskæring til at få adgang til elementerne på listen. Udskæring giver os adgang til en række varer ved at definere start-, slut-, trinparametrene.

# 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 finde antallet af forekomst for en given værdi ved hjælp af list.count (x) -metoden.

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

Vi kan finde indekspositionen for et givet element ved hjælp af list.index (x [, start [, end]]) -metoden.

>>> 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 bruge metoden list.reverse () til at vende elementerne på listen.

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

Vi kan bruge metoden list.pop (x) til at fjerne et element fra en liste på x position. Denne funktion fjerner elementet fra listen og viser det fjernede element. Hvis x ikke er angivet, returnerer pop () -metoden det sidste element 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å bruge metoden list.remove (x) til at fjerne elementet fra listen. Her tager x elementets værdi og kaster en ValueError, hvis x ikke er på 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 gøre en liste tom ved enten at tildele listenavn til firkantede parenteser eller ved hjælp af 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 at bruge listemetoder til at gøre listen tom eller fjerne et element fra listen kan vi bruge det indbyggede nøgleord del til at udføre denne handling. Nøgleordet "del" kan slette et listeobjekt fra hukommelsen eller slette et element fra en liste eller slette et element fra et udsnit.

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

Indbygget id () -funktion returnerer "objekt" til et objekt. Dette er et heltal, der garanteret er unikt og konstant for dette objekt i dets levetid.

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

Bemærk: Vi har fjernet listevariablen fra hukommelsen ved hjælp af del () , hvorfor den kaster navnefejl.

help() funtion:

Indbygget hjælp -funktion () er meget nyttig til at få detaljer om et bestemt objekt eller metoder til det objekt.

help(object)
help(object.method)

Hidtil i denne artikel har vi set, hvordan vi kan bruge en listedatastruktur til at gemme, få adgang til, ændre, slette listeobjekter ved hjælp af listemetoderne. Vi har også set nogle indbyggede funktioner som id (), dir (), type (), help (), som er meget effektive funktioner. Vi har også listeforståelse i python, som giver en mere kortfattet og læsbar måde at oprette en liste på.