Lærðu Python listagagnauppbyggingu - Part 1


Gagnauppbygging er safn gagnategunda, tengsl þeirra á milli og aðgerðir eða aðgerðir sem hægt er að beita á gögnin. Gagnategund getur verið strengur, heiltala, fljótandi gildi og svo framvegis.

  1. Hlutir sem hægt er að breyta stöðu þeirra þegar þeir eru búnir til eins og að bæta við, uppfæra eða eyða þáttum.
  2. Lists, Dictionary, Set, bytearray eru breytanlegar hlutargerðir í python.

  1. Ekki er hægt að breyta stöðu hlutar. Þegar hluturinn er búinn til getum við ekki bætt við, fjarlægt eða uppfært þætti.
  2. Strengur, Heiltala, Tuples, Frozenset eru nokkrar af óbreytanlegum hlutum í python.

  1. Einsleit gagnauppbygging – Gagnaeiningar verða af sömu gagnagerð (td: fylki).
  2. Gagnauppbygging – Gagnaeiningar mega ekki vera af sömu gagnagerð (td: Listi, Túllur, Set osfrv.).

Áður en við skiljum virkni innbyggðu gagnaskipulagsins skulum við sjá nokkrar innbyggðar aðgerðir sem verða notaðar með gagnaskipulagshlutum.

  • dir(obj) – innbyggt fall sem mun skila eigindinni og aðferðunum.
  • len(obj) – Skila lengd (fjölda hluta) hlutar. Rökin geta verið röð (svo sem strengur, bæti, tuple, listi eða svið) eða safn (eins og orðabók, mengi eða frosið mengi).
  • del – Þetta innbyggða lykilorð er notað til að eyða hlut úr nafnrými eða fjarlægja hluti úr hlut eins og lista, orðabók osfrv.
  • type(obj) – Type() fallið skilar annað hvort tegund hlutarins eða skilar nýrri tegund hlut sem byggir á röksemdum sem eru sendar.
  • id() – Þessi aðgerð skilar \identity hlutar. Þetta er heil tala sem er tryggt að sé einstök og stöðug fyrir þennan hlut á líftíma hans.

Nú þegar þú hefur séð nokkrar mikilvægar upplýsingar, skulum við halda áfram með Python gagnaskipulag.

Python kemur með innbyggt gagnaskipulag auk þess sem notendur geta skilgreint eigin gagnaskipulag. Innbyggt gagnaskipulag inniheldur LIST, ORÐABÓK, TUPLE og SET. Nokkur af dæmunum fyrir notendaskilgreinda gagnauppbyggingu eru STACK, QUEUES, TREE, HASHMAP, osfrv...

Fólk sem kemur frá öðrum forritunarmálum þekkir fylkisgerð mjög vel. En í python eru þeir ekki svo algengir.

Hér er listinn svipaður fylki en listinn gerir okkur kleift að geyma gildi af hvaða gagnategund sem er (heterogeneous) á meðan fylki mun aðeins geyma gögn af tiltekinni gerð (int, flot o.s.frv.). Til að nota fylki þarftu að flytja fylkið beint inn úr „fylki“ einingunni.

Í þessari Python greinaröð munum við skoða hvað er gagnabygging og innbyggð gagnabygging í Python.

Listi er gagnaskipulag sem er safn mismunandi gagnagerða. Hvað þýðir söfnun mismunandi gagnategunda? Listi getur geymt strengi, heiltölur, fljótandi punktagildi, hreiður lista og svo framvegis.

Listahlutir eru „Breytanlegir“ sem þýðir að hægt er að opna, breyta eða eyða hlutum sem eru búnir til á listanum. Stuðningur við flokkun lista. Hvert atriði á listunum er úthlutað heimilisfangi og það heimilisfang er hægt að nota til að fá aðgang að eða breyta tilteknu vörugildi .

  • Búa til lista
  • Setja inn/Aðganga/Breyta lista
  • Eyða lista

Hægt er að búa til lista með hornklofa.

>>> 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ð getum notað innbyggða type() aðgerð til að athuga tegund hlutarins.

>>> type(name)

Við getum nálgast aðferðir og eiginleika listatilviksins með því að nota dir() aðgerðina.

>>> 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ð getum fundið út heildarfjölda atriða á listanum með len() aðferð.

>>> len(name)

Við getum búið til nýjan lista úr núverandi lista með því að nota list.copy() aðferðina.

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

Við getum sett hlut inn í lista hvar sem er með list.insert(i, x) aðferðinni.

>>> 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ð getum notað list.append(x) aðferðina til að bæta einu atriði við listann. Þetta mun setja hlutinn inn í lok listans.

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

Við getum notað list.extend() aðferðina til að bæta mörgum hlutum við listann.

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

Við getum líka notað + stjórnanda til að sameina tvo lista. Bæði getur listinn verið af mismunandi gagnagerð.

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

Eins og áður hefur komið fram eru listar hlutir breytilegir. Listaatriði er hægt að breyta með því að vísa til vísitölustöðu og úthluta honum gildi.

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

Listinn styður bæði jákvæða og neikvæða verðtryggingu.

Verðtrygging byrjar frá 0 og neikvæð verðtrygging byrjar frá -1.

Við getum nálgast listaatriðið með því að nota vísitölustöðu þeirra.

>>> 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ð getum líka notað sneið til að fá aðgang að hlutunum á listanum. Sneiðing gerir okkur kleift að fá aðgang að ýmsum hlutum með því að skilgreina upphafs-, endir- og skreffæribreytur.

# 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ð getum fundið fjölda tilvika fyrir tiltekið gildi með list.count(x) aðferð.

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

Við getum fundið vísitölustöðu tiltekins atriðis með því að nota list.index(x[, byrjun[, end]]) aðferð.

>>> 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ð getum notað list.reverse() aðferðina til að snúa hlutunum á listanum við.

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

Við getum notað list.pop(x) aðferðina til að fjarlægja hlut af lista í x stöðu. Þessi aðgerð mun fjarlægja hlutinn af listanum og sýna hlutinn sem var fjarlægður. Ef x er ekki tilgreint þá mun pop() aðferðin skila síðasta atriðinu af listanum.

>>> 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ð getum líka notað list.remove (x) aðferðina til að fjarlægja hlutinn af listanum. Hér tekur x gildi hlutarins og sendir ValueError ef x er ekki á listanum.

>>> 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ð getum gert lista tóman með því annað hvort að úthluta listaheiti í hornklofa eða nota list.clear() aðferðina.

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

Í stað þess að nota listaaðferðir til að gera listann tóman eða fjarlægja hlut af listanum getum við notað innbyggt lykilorð del til að framkvæma þessar aðgerðir. „del“ lykilorðið getur eytt listahlut úr minni eða eytt hlut af lista eða eytt hlut úr sneið.

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

Innbyggt id() fall skilar \identity hlutar. Þetta er heil tala sem er tryggt að vera einstök og stöðug fyrir þennan hlut á líftíma hans.

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

Athugið: Við höfum fjarlægt listabreytuna úr minni með því að nota del(), þess vegna veldur hún nafnvillu.

help() funtion:

Innbyggð hjálp function() er mjög gagnleg til að fá upplýsingar um tiltekinn hlut eða aðferðir við þann hlut.

help(object)
help(object.method)

Hingað til í þessari grein höfum við séð hvernig við getum notað listagagnaskipulag til að geyma, nálgast, breyta, eyða listahlutum með því að nota listaaðferðirnar. Við höfum líka séð nokkrar innbyggðar aðgerðir eins og id(), dir(), type(), help() sem eru mjög áhrifaríkar aðgerðir. Við höfum líka listaskilning í python sem veitir hnitmiðaðri og læsilegri leið til að búa til lista.