Pagkat-on sa Python List Data Structure - Bahin 1


Ang Data Structure usa ka koleksyon sa mga tipo sa datos, ang relasyon sa taliwala nila ug ang mga gimbuhaton o operasyon nga mahimong magamit sa datos. Ang tipo sa datos mahimong string, Integer, Floating value ug uban pa.

  1. Mga butang kansang estado mahimong usbon sa higayon nga kini mabuhat sama sa pagdugang, pag-update o pagtangtang sa mga elemento.
  2. Mga listahan, Diksyonaryo, Set, bytearray kay mutable object type sa python.

  1. Ang kahimtang sa butang dili mausab. Kung nahimo na ang butang, dili kami makadugang, makatangtang o maka-update sa mga elemento.
  2. Ang String, Integer, Tuples, Frozenset mao ang pipila sa dili mausab nga matang sa butang sa python.

  1. Homogeneous Data Structure – Ang mga elemento sa datos mahimong parehas nga tipo sa datos (ex: Array).
  2. Heterogenous Data Structure – Ang mga elemento sa datos mahimong dili parehas nga tipo sa datos (ex: List, Tuples, Sets etc...).

Sa dili pa masabtan ang pag-andar sa built-in nga istruktura sa datos atong tan-awon ang pipila ka mga built-in nga gimbuhaton nga gamiton sa mga butang nga istruktura sa datos.

  • dir(obj) – usa ka built-in nga function nga mubalik sa attribute ug mga pamaagi.
  • len(obj) – Ibalik ang gitas-on (ang gidaghanon sa mga butang) sa usa ka butang. Ang argumento mahimong usa ka han-ay (sama sa string, bytes, tuple, lista, o range) o usa ka koleksyon (sama sa diksyonaryo, set, o frozen set).
  • del – Kining built-in nga keyword gigamit sa pagtangtang sa butang gikan sa namespace o pagtangtang sa mga butang gikan sa butang sama sa listahan, diksyonaryo, ug uban pa.
  • type(obj) – Ang type() function mubalik sa tipo sa butang o mubalik ug bag-ong tipo nga butang base sa mga argumento nga gipasa.
  • id() – Kini nga function nagbalik sa \identity sa usa ka butang. Kini usa ka integer nga gigarantiyahan nga talagsaon ug makanunayon alang niini nga butang sa tibuok kinabuhi niini.

Karon ingon nga nakakita ka pipila ka hinungdanon nga mga detalye, magpadayon kita sa mga istruktura sa datos sa python.

Ang Python adunay mga built-in nga istruktura sa datos ingon man ang mga tiggamit mahimo’g ipasabut ang ilang kaugalingon nga istruktura sa datos. Ang built-in nga istruktura sa datos naglakip sa LIST, DICTIONARY, TUPLE, ug SET. Pipila sa mga pananglitan alang sa mga istruktura sa datos nga gitakda sa user mao ang STACK, QUEUES, TREE, HASHMAP, etc...

Ang mga tawo nga gikan sa ubang mga programming language mahimong pamilyar kaayo sa usa ka array type. Apan sa python, dili kini komon.

Dinhi ang lista susama sa usa ka laray apan ang lista nagtugot kanamo sa pagtipig sa mga kantidad sa bisan unsang tipo sa datos (Heterogenous) samtang ang laray maghupot sa datos sa partikular nga tipo lamang (int, float etc...). Aron magamit ang array kinahanglan nimo nga i-import ang array gikan sa array nga module nga klaro.

Niini nga serye sa mga artikulo sa Python, atong tan-awon kung unsa ang istruktura sa datos ug istruktura sa datos nga gitukod sa python.

Ang lista usa ka istruktura sa datos nga usa ka koleksyon sa lainlaing mga tipo sa datos. Unsa ang gipasabot sa \pagkolekta sa lain-laing matang sa datos? Ang listahan makatipig sa mga kuwerdas, Integers, Floating point values, Nested list ug uban pa.

Ang mga butang sa lista mao ang \Mutable nga nagpasabut nga ang mga butang nga gihimo sa sulod sa lista mahimong ma-access, mabag-o o matangtang. Pag-indeks sa suporta sa lista. Ang matag aytem sa mga lista gi-assign sa usa ka adres ug kana nga adres magamit sa pag-access o pagbag-o sa partikular nga kantidad sa butang .

  • Paghimo og listahan
  • Insert/Access/Modify list
  • Pagtangtang sa lista

Ang listahan mahimong mabuhat gamit ang square bracket.

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

Mahimo natong gamiton ang inbuilt type() function aron masusi ang tipo sa butang.

>>> type(name)

Ma-access nato ang mga pamaagi ug mga hiyas sa instance sa listahan gamit ang dir() function.

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

Atong mahibal-an ang kinatibuk-ang gidaghanon sa mga butang sa listahan gamit ang len() nga pamaagi.

>>> len(name)

Makahimo kami og bag-ong listahan gikan sa kasamtangan nga listahan gamit ang list.copy() nga pamaagi.

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

Mahimo natong isulod ang usa ka butang ngadto sa lista sa bisan unsang posisyon gamit ang list.insert(i, x) nga pamaagi.

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

Mahimo natong gamiton ang list.append(x) nga pamaagi aron idugang ang usa ka butang sa listahan. Kini mosal-ot sa butang ngadto sa katapusan sa listahan.

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

Magamit namo ang list.extend() nga pamaagi aron makadugang og daghang aytem sa listahan.

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

Mahimo usab namo gamiton ang operator nga + aron paghiusa sa duha ka lista. Ang duha nga lista mahimong lainlain nga tipo sa datos.

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

Sama sa gipahayag na nga mga lista sa mga butang mausab. Ang usa ka butang sa listahan mahimong usbon pinaagi sa paghisgot sa posisyon sa indeks ug paghatag og bili niini.

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

Ang lista nagsuporta sa positibo ug negatibo nga pag-indeks.

Ang pag-indeks magsugod gikan sa 0 ug ang Negatibo nga Pag-indeks magsugod gikan sa -1.

Ma-access nato ang listahan gamit ang ilang posisyon sa indeks.

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

Mahimo usab natong gamiton ang paghiwa aron ma-access ang mga butang sa lista. Gitugotan kami sa paghiwa nga maka-access sa lainlaing mga butang pinaagi sa pagtino sa pagsugod, pagtapos, mga parameter sa Lakang.

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

Makita nato ang gidaghanon sa panghitabo para sa gihatag nga bili gamit ang list.count(x) nga pamaagi.

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

Makita nato ang posisyon sa Index sa usa ka butang gamit ang list.index(x[, start[, end]]) method.

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

Mahimo natong gamiton ang list.reverse() nga pamaagi aron balihon ang mga butang sa listahan.

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

Magamit nato ang list.pop(x) nga pamaagi aron makuha ang usa ka butang gikan sa listahan sa x nga posisyon. Kini nga function magtangtang sa butang gikan sa lista ug ipakita ang gikuha nga butang. Kung ang x wala gitakda unya ang pop() nga pamaagi ibalik ang katapusang aytem gikan sa lista.

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

Magamit usab namo ang list.remove (x) nga pamaagi aron makuha ang butang gikan sa listahan. Dinhi gikuha sa x ang bili sa butang ug gilabay ang ValueError kung ang x wala sa lista.

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

Mahimo natong haw-ang ang usa ka lista pinaagi sa pagbutang sa ngalan sa listahan sa mga square bracket o paggamit sa list.clear() nga pamaagi.

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

Imbis nga gamiton ang mga pamaagi sa lista aron mahimo nga walay sulod ang lista o tangtangon ang usa ka butang gikan sa lista mahimo namong gamiton ang built-in nga keyword nga del aron mahimo kini nga mga aksyon. Ang del nga keyword mahimong makatangtang sa usa ka butang sa lista gikan sa memorya o makatangtang sa usa ka butang gikan sa usa ka lista o makatangtang sa usa ka butang gikan sa usa ka slice.

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

Gitukod sa id() function ibalik ang \identity sa usa ka butang. Kini usa ka integer nga gigarantiyahan nga talagsaon ug makanunayon alang niini nga butang sa tibuok kinabuhi niini.

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

Matikdi: among gitangtang ang list variable gikan sa memory gamit ang del(), busa kini naghulog sa name error.

help() funtion:

Ang natukod nga tabang function() mapuslanon kaayo aron makakuha og mga detalye bahin sa usa ka partikular nga butang o mga pamaagi sa kana nga butang.

help(object)
help(object.method)

Hangtod karon sa kini nga artikulo, nakita namon kung giunsa namon magamit ang usa ka istruktura sa datos sa lista sa pagtipig, pag-access, pagbag-o, pagtangtang sa mga butang sa lista pinaagi sa paggamit sa mga pamaagi sa lista. Nakita usab namo ang pipila ka mga built-in nga function sama sa id(), dir(), type(), help() nga epektibo kaayo nga functions. Naa pud mi list comprehension sa python nga naghatag ug mas mubu ug mabasa nga paagi sa paghimo ug lista.