Spoznajte strukturo podatkov seznama Python - 1. del


Podatkovna struktura je zbirka podatkovnih vrst, razmerje med njimi in funkcije ali operacije, ki jih je mogoče uporabiti na podatkih. Podatkovni tip je lahko niz, celo število, plavajoča vrednost itd.

  1. Predmeti, katerih stanje je mogoče spremeniti, ko je ustvarjeno, na primer dodajanje, posodabljanje ali brisanje elementov.
  2. Seznami, slovar, nabor in bajtray so spremenljivi tipi predmetov v pythonu.

  1. Stanja predmeta ni mogoče spremeniti. Ko je objekt ustvarjen, ne moremo dodajati, odstranjevati ali posodabljati elementov.
  2. String, Integer, Tuples, Frozenset so nekatere od nespremenljivih vrst predmetov v pythonu.

  1. Homogena struktura podatkov - Podatkovni elementi bodo iste vrste podatkov (npr. Matrika).
  2. Heterogena struktura podatkov - Podatkovni elementi ne smejo biti iste vrste podatkov (npr. Seznam, nabori, kompleti itd.).

Preden razumemo funkcionalnost vgrajene podatkovne strukture, si oglejmo nekaj vgrajenih funkcij, ki se bodo uporabljale z objekti podatkovne strukture.

  • dir (obj) - vgrajena funkcija, ki vrne atribut in metode.
  • len (obj) - vrne dolžino (število elementov) predmeta. Argument je lahko zaporedje (na primer niz, bajti, nabor, seznam ali obseg) ali zbirka (na primer slovar, nabor ali zamrznjeni nabor).
  • del - Ta vgrajena ključna beseda se uporablja za brisanje predmeta iz imenskega prostora ali odstranjevanje elementov iz predmeta, kot so seznam, slovar itd.
  • type (obj) - funkcija type() bodisi vrne vrsto predmeta bodisi na podlagi predanih argumentov vrne nov objekt tipa.
  • id() - Ta funkcija vrne\"identiteto" predmeta. To je celo število, za katerega je zagotovljeno, da bo v tem času edinstveno in konstantno.

Zdaj, ko ste videli nekaj pomembnih podrobnosti, nadaljujmo s podatkovnimi strukturami python.

Python ima vgrajene podatkovne strukture, uporabniki pa lahko sami določijo svoje podatkovne strukture. Vgrajena podatkovna struktura vključuje SEZNAM, REČNIK, TUPLE in SET. Nekateri primeri uporabniško določenih podatkovnih struktur so STACK, QUEUES, TREE, HASHMAP itd.

Ljudje, ki prihajajo iz drugih programskih jezikov, bodo vrsto matrice zelo dobro poznali. Toda v pythonu niso tako pogosti.

Tu je seznam nekako podoben matriki, vendar nam seznam omogoča shranjevanje vrednosti katerega koli podatkovnega tipa (heterogenega), medtem ko bodo v matriki shranjeni samo podatki določene vrste (int, float itd.). Če želite uporabiti polje, morate izrecno uvoziti polje iz modula "matrika".

V tej seriji člankov o Pythonu bomo preučili, kaj je podatkovna struktura in vgrajena podatkovna struktura pythona.

Seznam je podatkovna struktura, ki je zbirka različnih vrst podatkov. Kaj pomeni\"zbiranje različnih podatkovnih vrst"? Seznam lahko shrani nize, cela števila, vrednosti s plavajočo vejico, ugnezdeni seznam itd.

Predmeti seznama so\"Spremenljivi", kar pomeni, da je do elementov, ustvarjenih na seznamu, mogoče dostopati, jih spreminjati ali brisati. Indeksiranje podpira seznam. Vsak element na seznamih je dodeljen naslovu in ta naslov se lahko uporablja za dostop do določene vrednosti elementa ali njegovo spreminjanje. .

  • Ustvarite seznam
  • Vstavi/dostopi/spremeni seznam
  • Izbriši seznam

Seznam je mogoče ustvariti z uporabo oglatih oklepajev.

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

Za preverjanje vrste predmeta lahko uporabimo vgrajeno funkcijo type() .

>>> type(name)

Do metod in atributov primerka seznama lahko dostopamo s funkcijo 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']

Skupno število elementov na seznamu lahko ugotovimo z metodo len() .

>>> len(name)

Iz obstoječega seznama lahko ustvarimo nov seznam z metodo list.copy() .

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

Element lahko vstavimo na seznam na katerem koli mestu z metodo list.insert (i, x) .

>>> 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.

Za dodajanje posamezne postavke na seznam lahko uporabimo metodo list.append (x) . To bo element vstavilo na konec seznama.

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

Za dodajanje več elementov na seznam lahko uporabimo metodo list.extend() .

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

Za združevanje dveh seznamov lahko uporabimo tudi operator + . Oba seznama sta lahko različnih vrst podatkov.

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

Kot smo že navedli, so predmeti spremenljivi. Element seznama je mogoče spremeniti tako, da se sklicuje na položaj indeksa in mu dodeli vrednost.

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

Seznam podpira tako pozitivno kot negativno indeksiranje.

Indeksiranje se začne od 0, negativno indeksiranje pa od -1.

Do elementa seznama lahko dostopamo z uporabo njegovega indeksnega položaja.

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

Za dostop do elementov na seznamu lahko uporabimo tudi rezanje. Rezanje nam omogoča dostop do vrste elementov z definiranjem začetnega, končnega in koračnega koraka.

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

Število pojavitev za določeno vrednost lahko poiščemo z metodo list.count (x) .

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

Položaj indeksa določenega predmeta lahko najdemo z metodo 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

Za obrnitev elementov na seznamu lahko uporabimo metodo list.reverse() .

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

Za odstranjevanje predmeta s seznama na položaju x lahko uporabimo metodo list.pop (x) . Ta funkcija bo element odstranila s seznama in prikazala odstranjeni element. Če x ni določen, bo metoda pop() vrnila zadnji element s seznama.

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

Za odstranitev elementa s seznama lahko uporabimo tudi metodo list.remove (x) . Tu x vzame vrednost elementa in vrže ValueError, če x ni na seznamu.

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

Seznam lahko naredimo prazen, tako da mu dodamo ime seznama v oglate oklepaje ali z uporabo metode list.clear() .

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

Namesto da uporabimo metode seznama, da seznam postane prazen ali odstranimo element s seznama, lahko za izvajanje teh dejanj uporabimo vgrajeno ključno besedo del . Ključna beseda "del" lahko izbriše predmet seznama iz pomnilnika ali element s seznama ali element iz rezine.

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

Vgrajena funkcija id() vrne\"identiteto" predmeta. To je celo število, za katerega je zagotovljeno, da je edinstveno in konstantno v času njegovega delovanja.

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

Opomba: Spremenljivko seznama smo odstranili iz pomnilnika z del() , zato vrže napako v imenu.

help() funtion:

Vgrajena pomoč function() je zelo koristna za pridobitev podrobnosti o določenem predmetu ali metodah tega predmeta.

help(object)
help(object.method)

Do zdaj smo v tem članku videli, kako lahko z uporabo seznamskih metod uporabimo strukturo podatkov seznama za shranjevanje, dostop, spreminjanje in brisanje predmetov seznama. Opazili smo tudi nekatere vgrajene funkcije, kot so id(), dir(), type(), help(), ki so zelo učinkovite funkcije. Razumevanje seznama imamo tudi v pythonu, ki omogoča bolj jedrnat in berljiv način ustvarjanja seznama.