Opi Python-luettelotietorakenne – Osa 1


Tietorakenne on kokoelma tietotyyppejä, niiden välisiä suhteita ja toimintoja tai operaatioita, joita voidaan soveltaa tietoihin. Tietotyyppi voi olla merkkijono, Kokonaisluku, Kelluva arvo ja niin edelleen.

Mitä eroa on muuttuvan/muuttumattoman objektin välillä?
Muuttuvat objektit
  1. Objektit, joiden tilaa voidaan muuttaa luomisen jälkeen, kuten elementtien lisääminen, päivittäminen tai poistaminen.
  2. Listat, Sanakirja, Set, bytearray ovat muuttuvia objektityyppejä Pythonissa.
Muuttumattomat esineet
  1. Objektin tilaa ei voi muuttaa. Kun objekti on luotu, emme voi lisätä, poistaa tai päivittää elementtejä.
  2. String, Integer, Tuples, Frozenset ovat joitain pythonin muuttumattomista objektityypeistä.
Mitä eroa on homogeenisen/heterogeenisen tietorakenteen välillä?
  1. Homogeeninen tietorakenne – Tietoelementit ovat samaa tietotyyppiä (esim. Array).
  2. Heterogeeninen tietorakenne – Tietoelementit eivät välttämättä ole samaa tietotyyppiä (esim. Lista, Tuples, Sets jne.).
Mitä ovat primitiiviset ja ei-primitiiviset tietotyypit?

Ennen kuin ymmärrät sisäänrakennetun tietorakenteen toiminnallisuuden, katsotaan muutamia sisäänrakennettuja toimintoja, joita käytetään tietorakenneobjektien kanssa.

  • dir(obj) – sisäänrakennettu funktio, joka palauttaa määritteen ja menetelmät.
  • len(obj) – Palauttaa kohteen pituuden (kohteiden lukumäärän). Argumentti voi olla sekvenssi (kuten merkkijono, tavut, monikko, luettelo tai alue) tai kokoelma (kuten sanakirja, joukko tai lukittu joukko).
  • del – Tätä sisäänrakennettua avainsanaa käytetään kohteen poistamiseen nimiavaruudesta tai kohteiden poistamiseen objektista, kuten luettelosta, sanakirjasta jne.
  • type(obj) – Type()-funktio joko palauttaa objektin tyypin tai palauttaa uuden tyyppisen objektin välitettyjen argumenttien perusteella.
  • id() – Tämä funktio palauttaa objektin "identiteetin". Tämä on kokonaisluku, joka on taatusti ainutlaatuinen ja vakio tälle objektille sen elinkaaren aikana.

Nyt kun olet nähnyt muutamia tärkeitä yksityiskohtia, jatkakaamme python-tietorakenteita.

Python sisältää sisäänrakennetut tietorakenteet, ja käyttäjät voivat määrittää omat tietorakenteensa. Sisäänrakennettu tietorakenne sisältää LIST, DICTIONARY, TUPLE ja SET. Esimerkkejä käyttäjän määrittämistä tietorakenteista ovat PINO, JONOT, PUU, HASHMAP jne...

Ihmiset, jotka tulevat muista ohjelmointikielistä, ovat hyvin tuttuja taulukkotyypeistä. Mutta pythonissa ne eivät ole niin yleisiä.

Tässä luettelo on tavallaan samanlainen kuin taulukko, mutta luettelo antaa meille mahdollisuuden tallentaa minkä tahansa tietotyypin arvoja (heterogeeninen), kun taas taulukko sisältää vain tietyn tyyppisiä tietoja (int, float jne.). Jotta voit käyttää taulukkoa, sinun on tuotava taulukko "array"-moduulista erikseen.

Tässä Python-artikkelisarjassa tarkastelemme, mitä ovat tietorakenne ja pythonin sisäänrakennettu tietorakenne.

LISTA

Lista on tietorakenne, joka on kokoelma erilaisia tietotyyppejä. Mitä "eri tietotyyppien kerääminen" tarkoittaa? Lista voi tallentaa merkkijonoja, kokonaislukuja, liukulukuarvoja, sisäkkäisiä luetteloita ja niin edelleen.

Lista-objektit ovat "Muhtelevia", mikä tarkoittaa, että luettelon sisällä luotuja kohteita voidaan käyttää, muokata tai poistaa. Luettelo tukee indeksointia. Jokaiselle luettelon kohteelle on määritetty osoite, ja tätä osoitetta voidaan käyttää tietyn kohteen arvon avaamiseen tai muokkaamiseen.

  • Luo luettelo
  • Lisää/Käytä/muokkaa listaa
  • Poista luettelo

LUO LUETTELO

Lista voidaan luoda hakasulkeilla.

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

Voimme käyttää sisäänrakennettua type()-funktiota objektityypin tarkistamiseen.

>>> type(name)

Voimme käyttää listan-ilmentymän menetelmiä ja attribuutteja käyttämällä dir()-funktiota.

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

Voimme selvittää luettelon kohteiden kokonaismäärän käyttämällä len()-menetelmää.

>>> len(name)

Voimme luoda uuden luettelon olemassa olevasta luettelosta käyttämällä list.copy()-menetelmää.

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

LISÄÄMINEN/KÄYTTÖ/MUOKKAUS LUETTELO

Voimme lisätä kohteen luetteloon mihin tahansa kohtaan käyttämällä list.insert(i, x)-menetelmää.

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

Voimme käyttää list.append(x)-menetelmää yksittäisen kohteen lisäämiseen luetteloon. Tämä lisää kohteen luettelon loppuun.

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

Voimme käyttää menetelmää list.extend() lisätäksesi useita kohteita luetteloon.

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

Voimme myös käyttää '+' -operaattoria kahden luettelon yhdistämiseen. Molemmat luettelot voivat olla eri tietotyyppejä.

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

Kuten luetteloissa on jo todettu, objektit ovat muuttuvia. Luettelokohdetta voidaan muokata viittaamalla indeksin sijaintiin ja antamalla sille arvo.

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

Luettelo tukee sekä positiivista että negatiivista indeksointia.

Indeksointi alkaa arvosta 0 ja negatiivinen indeksointi alkaa arvosta -1.

Voimme käyttää luettelokohdetta käyttämällä niiden hakemistopaikkaa.

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

Voimme myös käyttää viipalointia päästäksemme luettelossa oleviin kohtiin. Viipaloinnin avulla voimme käyttää useita kohteita määrittämällä aloitus-, loppu- ja vaiheparametrit.

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

Voimme löytää tietyn arvon esiintymisten määrän käyttämällä list.count(x)-menetelmää.

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

Löydämme tietyn kohteen indeksipaikan käyttämällä list.index(x[, alku[, loppu]])-menetelmää.

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

Voimme käyttää list.reverse()-menetelmää listan kohteiden kääntämiseen.

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

POISTA LIST

Voimme käyttää list.pop(x)-menetelmää kohteen poistamiseen luettelosta kohdassa x. Tämä toiminto poistaa kohteen luettelosta ja näyttää poistetun kohteen. Jos x-arvoa ei ole määritetty, pop()-metodi palauttaa luettelon viimeisen kohteen.

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

Voimme myös käyttää list.remove (x) -menetelmää kohteen poistamiseen luettelosta. Tässä x ottaa kohteen arvon ja antaa ValueError-ilmoituksen, jos x ei ole luettelossa.

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

Lista voidaan tyhjentää joko asettamalla luettelon nimi hakasulkeisiin tai käyttämällä list.clear()-menetelmää.

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

Sen sijaan, että käyttäisimme luettelomenetelmiä luettelon tyhjentämiseen tai kohteen poistamiseen luettelosta, voimme käyttää sisäänrakennettua avainsanaa del tämän toiminnon suorittamiseen. Avainsana "del" voi poistaa luetteloobjektin muistista tai poistaa kohteen luettelosta tai poistaa kohteen osista.

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

Sisäänrakennettu id()-funktio palauttaa objektin "identiteetin". Tämä on kokonaisluku, joka on taatusti ainutlaatuinen ja vakio tälle objektille sen elinkaaren aikana.

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

Huomaa: olemme poistaneet luettelomuuttujan muistista komennolla del(), joten se antaa nimivirheen.

help() funtion:

Sisäänrakennettu ohje function() on erittäin hyödyllinen saadaksesi tietoja tietystä objektista tai objektin menetelmistä.

help(object)
help(object.method)
Yhteenveto

Tässä artikkelissa olemme tähän mennessä nähneet, kuinka voimme käyttää luettelotietorakennetta luetteloobjektien tallentamiseen, käyttämiseen, muokkaamiseen ja poistamiseen luettelomenetelmien avulla. Olemme nähneet myös joitain sisäänrakennettuja toimintoja, kuten id(), dir(), type(), help()< jotka ovat erittäin tehokkaita toimintoja. Pythonissa on myös luetteloiden ymmärtäminen, joka tarjoaa tiiviimmän ja luettavamman tavan luoda luettelo.