'N INLEIDING TOT PYTHON ARRAY VERDUIDELIK EN GEVISUALISEER - BLOG
In hierdie tutoriaal gaan ons in op hoe Python -arrays werk, wat hul beperkings is en hoe u dit kan gebruik om hul doeltreffendheid te maximaliseren.
So, wat is 'n uiteensetting in rekenaarwetenskap?
'N Skikking is 'n datastruktuur wat 'n formaat is wat spesifiseer hoe data georganiseer, bestuur en gestoor moet word sodat dit effektief verkry en gewysig kan word. Gewoonlik gebruik ons ​​'n skikking om 'n basiese waarde voor te stel: karakters, heelgetalle of dryfpuntgetalle. Ons het verskillende datastrukture en die belangrikheid daarvan behandel in 'n onlangse artikel met die titel Oorsig van basiese datastrukture: hoe om data op 'n doeltreffende manier te organiseer , sodat u dit kan gebruik om hierdie onderwerp op te ruim.
So, hoe is 'n skikking georganiseer?
In hierdie datastruktuur word elemente in 'n spesifieke volgorde in 'n aangrensende geheue blok gestoor. Hier is 'n netjiese visualisering:
Hoe kan Array -elemente verkry word?
Kom ons neem 'n skikking A van grootte N. 'n Unieke indeks | _+_ | word aan elke geheue -plek gegee. Daar word gewoonlik na hierdie indeks verwys as | _+_ | ('n ander notasie is | _+_ |).
'C', 'L', 'A', 'H', 'S' en 'E' is almal datawaardes. Daar moet op gelet word dat hulle gewoonlik van dieselfde tipe moet wees, maar verskillende programmeertale dwing verskillende reëls af, terwyl sommige van hulle multi-tipe skikkings moontlik maak.
Wat is die moontlike nadele van die gebruik van 'n skikking?
Die onvermoë om datatipes in 'n skikking te meng, kan 'n groot probleem wees - vir eers toets dit u aandag; Dit is ook 'n suboptimale ontwerpbesluit, selfs as u in sommige programmeertale dit eintlik kan meng.
In C-agtige tale is daar 'n ander probleem wat te doen het met die feit dat die skikkinggrootte nie kan verander nie. Gestel ons skep 'n skikking wat met verskillende bedryfstelsels bestaan: daar is Windows, daar is Linux ... en daarom skep ons naïef 'n skikking vir twee waardes: | _+_ |. Maar wag - ons het macOS vergeet! In hierdie geval, in C-agtige tale, is die enigste opsie waarmee ons die derde element kan byvoeg, 'n nuwe skikking skep en die datawaardes van die ou skikking na die nuwe kopieer. Sjoe!
Werk met 'n Python Array
Skikkings is 'n noodsaaklike deel van baie programmeertale, maar hulle is nie juis inheems aan Python nie. Om 'n skikking in Python te gebruik, moet ons eers die | _+_ | module:
Hierdie klein detail toon dat die skyffunksies in Python (gedeeltelik) vervang kan word deur sommige ingeboude funksies soos | _+_ |. Soos ons in die onderstaande gedeeltes sal leer, is skikkings en lyste egter nie dieselfde nie. By die invoer van die skikkingsmodule kan ons uiteindelik die skikking funksie gebruik om 'n nuwe skikking te initialiseer. Nou kan ons die sintaksis daarvan ontleed.
Sintaksis en argumente
Die sintaksis is nie eenvoudig nie - dit bevat 'n paar terme wat ons moet definieer om die skikkings werklik te verstaan:
So, wat beteken hierdie terme? Die tikkode , soos die naam aandui, definieer die tipe kode van die voorwerp, dit wil sê of die skikking waardes van tipe A, tipe B, tipe C, ens moet bevat.
Soos ons kan sien uit die tabelkop met die titel Python Type, kan ons die volgende datatipes in ons skikkings gebruik:
Floating-point getalle ,
Unicode karakters (die dokumentasie waarsku egter dat hierdie tikkode sedert weergawe 3.3 verouder word en in weergawe 4.0 verwyder sal word)
As u die C -tipes wil opdoen, raadpleeg die volgende artikel: C datatipes .
Die inisialiseerder, aan die ander kant, is 'n opsionele argument wat bepaal watter elemente in die skikking ingesluit moet word. Hierdie elemente (om presies te wees) moet aan die tydkode voldoen; anders kry u 'n | _+_ |:
Dit sal lewer:
waar om 'n rooijakkals te koop
Metodes en operasies van Python Array
Soos met enige ander datastruktuur, kan ons 'n magdom metodes op die skikking toepas - sommige tipiese bewerkings sluit in tel, byvoeging en verwydering van die elemente.
Voeg 'n element by
Om 'n nuwe item by te voeg | _+_ | aan die einde van die skikking kan ons | _+_ | gebruik:
Dit sal die uitgang lewer | _+_ |
Tel 'n element
Om te bepaal hoe gereeld die item | _+_ | in die skikking voorkom, kan ons | _+_ | gebruik:
Dit sal die uitgang lewer | _+_ |.
Uitbreiding van 'n skikking
Ons kan 'n herhaalbare items om ons reeks uit te brei; Raadpleeg ons artikel met die titel as u iterables en iterators moet opknap Python zip () Funksie verduidelik en gevisualiseer . Die herhaling wat ons gebruik, kan óf: a) 'n skikking óf b) nie-skikking wees.
Scenario 1: Uitbreiding van 'n skikking met 'n ander skikking . In hierdie geval moet die twee skikkings dieselfde tipe kode hê - ons loop af op | _+_ | andersins.
Scenario 2: Uitbreiding van 'n skikking met enige ander herhaalbare as die skikking . Die elemente moet weer van dieselfde tipe wees:
Die uitset sal dieselfde wees as in scenario 1.
Vind die element se eerste voorkoms
| _+_ | stel ons in staat om die indeks van die element | _+_ | toe dit die eerste keer gebeur het:
Dit sal die uitgang lewer | _+_ | en | _+_ | onderskeidelik.
Voeg 'n element in
Met | _+_ | kan ons 'n nuwe item x in die skikking plaas voor posisie i.
Dit sal die uitgang lewer | _+_ |. Ons kan ook gebruik negatiewe waardes - hulle word beskou as relatief tot die uiteinde van die skikking. Byvoorbeeld, om 'n nuwe tweede-tot-laaste item in te voeg, gebruik ons ​​-1 as die waarde vir i:
Traceback (most recent call last): File 'C:ProPy	p-ex	mp1.py', line 3, in a = array.array('u', [1, 2, 3, 4, 5]) TypeError: array item must be unicode character
Verwydering van 'n element
Vir hierdie operasie beskik ons ​​oor twee metodes.
Gebruik | _+_ | om die item deur sy indeks : | _+_ | neem die opsionele argument | _+_ |, verwyder en gee die ooreenstemmende item terug. As geen argument aangevoer word nie, | _+_ | standaard op | _+_ |.
Gebruik | _+_ | om die item volgens die waarde daarvan te verwyder: | _+_ | sal die eerste voorkoms van item x verwyder.
Dit sal die volgende uitvoer: | _+_ |
Omkeer van 'n skikking
Om die volgorde van die items in die skikking om te keer, kan ons | _+_ | gebruik:
Opsomming van 'n skikking
Ons kan ook die skikking opsom - dit gee 'n duidelike voorstelling van die elemente van die skikking:
array('i', [1, 2, 3, 4, 5, 6]).
Vergelyk 'n Python -lys met 'n Python -reeks
In Python dien beide lyste en skikkings 'n soortgelyke doel: hulle groepeer 'n paar elemente en bevat dit. Om hierdie rede meng verskillende bronne hierdie terme saam en formuleer hulle verduidelikings op 'n manier wat daarop dui dat lyste en skikkings dieselfde is. Ons sien dit meer in koderinguitdagings-aangesien baie van hierdie platforms taalagnosties is, mis hulle dikwels die fyn besonderhede van hoe elke programmeertaal van die ander verskil in die implementering van sekere funksies ('n goeie voorbeeld is skikkings) . Natuurlik kruip dieselfde wanopvatting in onderhoudsvrae.
Hier is die belangrike wegneemete: Python -lyste en Python -skikkings verskil baie!
Om skikkings beter te verstaan, moet ons eers die lyste ontleed. Watter sleutelkenmerke het hulle?
Lyste is ingebou - hulle is 'n integrale deel van Python as 'n tegnologie en u hoef dit nie in te voer nie. Skikkings, aan die ander kant, is beskikbaar in die skikkingsmodule.
Lyste kan bevat verskillende datatipes . Skikkings vereis egter dat die items van dieselfde datatipe moet wees.
Dit is omtrent alles wat u moet weet oor Python -skikkings! Kom ons herhaal wat ons geleer het:
Skikkings is baie vasgebind geheue bestuur - as prestasie van kritieke belang is, kan hulle u help.
Skikkings kan wees gewysig op verskillende maniere: u kan interaksie hê met hul elemente en nuwes byvoeg.
In Python is skikkings en lyste nie dieselfde nie - u moet die verskille tussen hulle duidelik verstaan ​​om die skikkings korrek en doeltreffend te benut.