Selles õpetuses saate näidete abil teada Pythoni massiivmoodulist, erinevusest massiividel ja loenditel ning nende kasutamisest ja ajast.
Märkus. Kui inimesed ütlevad Pythonis massiive, räägivad nad sagedamini Pythoni loenditest . Sel juhul külastage Pythoni loendi õpetust.
Selles õpetuses keskendume moodulile nimega array
. array
Moodul võimaldab meil säilitada kogumik arvväärtusi.
Pythoni massiivide loomine
Numbriliste väärtuste massiivi loomiseks peame array
mooduli importima . Näiteks:
import array as arr a = arr.array('d', (1.1, 3.5, 4.5)) print(a)
Väljund
massiiv ('d', (1.1, 3.5, 4.5))
Siin lõime massiivi float
tüüpi. Täht d
on tüübikood. See määrab loomise ajal massiivi tüübi.
Tavaliselt kasutatavad tüübikoodid on loetletud järgmiselt:
Kood | C tüüp | Pythoni tüüp | Min baiti |
---|---|---|---|
b | allkirjastatud char | int | 1 |
B | allkirjastamata süsi | int | 1 |
u | Py_UNICODE | Unicode | 2 |
h | allkirjastatud lühike | int | 2 |
H | allkirjastamata lühike | int | 2 |
i | allkirjastatud int | int | 2 |
I | allkirjastamata int | int | 2 |
l | allkirjastatud pikk | int | 4 |
L | allkirjastamata pikk | int | 4 |
f | ujuk | ujuk | 4 |
d | topelt | ujuk | 8 |
Me ei käsitle selles artiklis erinevaid C-tüüpe. Selles artiklis kasutame kahte tüüpi koodi: i
täisarvude ja d
ujukite jaoks.
Märkus . u
Unicode'i märkide tüübikood on alates versioonist 3.3 aegunud. Vältige võimalikult palju kasutamist.
Juurdepääs Pythoni massiivi elementidele
Massiivi elementidele juurdepääsemiseks kasutame indekseid:
import array as arr a = arr.array('i', (2, 4, 6, 8)) print("First element:", a(0)) print("Second element:", a(1)) print("Last element:", a(-1))
Väljund
Esimene element: 2 Teine element: 4 Viimane element: 8
Märkus . Indeks algab 0-st (mitte 1), mis sarnaneb loenditega.
Viilutamine Pythoni massiivid
Saame juurdepääsu massiivi üksustele, kasutades viilutamisoperaatorit :
.
import array as arr numbers_list = (2, 5, 62, 5, 42, 52, 48, 5) numbers_array = arr.array('i', numbers_list) print(numbers_array(2:5)) # 3rd to 5th print(numbers_array(:-5)) # beginning to 4th print(numbers_array(5:)) # 6th to end print(numbers_array(:)) # beginning to end
Väljund
array ('i', (62, 5, 42)) array ('i', (2, 5, 62)) array ('i', (52, 48, 5)) array ('i', (2) (5, 62, 5, 42, 52, 48, 5)
Elementide muutmine ja lisamine
Massiivid on muudetavad; nende elemente saab muuta sarnaselt loenditega.
import array as arr numbers = arr.array('i', (1, 2, 3, 5, 7, 10)) # changing first element numbers(0) = 0 print(numbers) # Output: array('i', (0, 2, 3, 5, 7, 10)) # changing 3rd to 5th element numbers(2:5) = arr.array('i', (4, 6, 8)) print(numbers) # Output: array('i', (0, 2, 4, 6, 8, 10))
Väljund
massiiv ('i', (0, 2, 3, 5, 7, 10)) massiiv ('i', (0, 2, 4, 6, 8, 10))
Võime append()
meetodi abil massiivi lisada ühe üksuse või meetodi abil lisada mitu üksust extend()
.
import array as arr numbers = arr.array('i', (1, 2, 3)) numbers.append(4) print(numbers) # Output: array('i', (1, 2, 3, 4)) # extend() appends iterable to the end of the array numbers.extend((5, 6, 7)) print(numbers) # Output: array('i', (1, 2, 3, 4, 5, 6, 7))
Väljund
massiiv ('i', (1, 2, 3, 4)) massiiv ('i', (1, 2, 3, 4, 5, 6, 7))
Samuti võime +
operaatori abil liita kaks massiivi .
import array as arr odd = arr.array('i', (1, 3, 5)) even = arr.array('i', (2, 4, 6)) numbers = arr.array('i') # creating empty array of integer numbers = odd + even print(numbers)
Väljund
massiiv ('i', (1, 3, 5, 2, 4, 6)
Pythoni massiivi elementide eemaldamine
Saame massiivi ühe või mitu üksust kustutada, kasutades Pythoni del-lauset.
import array as arr number = arr.array('i', (1, 2, 3, 3, 4)) del number(2) # removing third element print(number) # Output: array('i', (1, 2, 3, 4)) del number # deleting entire array print(number) # Error: array is not defined
Väljund
array ('i', (1, 2, 3, 4)) Traceback (viimane kõne viimati): fail "", rida 9, trükitud (number) # tõrge: massiivi pole määratletud NameError: name 'number' is ei ole defineeritud
Saame kasutada remove()
meetodit antud üksuse pop()
eemaldamiseks ja meetodit üksuse eemaldamiseks antud indeksis.
import array as arr numbers = arr.array('i', (10, 11, 12, 12, 13)) numbers.remove(12) print(numbers) # Output: array('i', (10, 11, 12, 13)) print(numbers.pop(2)) # Output: 12 print(numbers) # Output: array('i', (10, 11, 13))
Väljund
massiiv ('i', (10, 11, 12, 13)) 12 massiiv ('i', (10, 11, 13))
Sellelt lehelt leiate lisateavet Pythoni massiivi ja massiivi meetodite kohta.
Python loetleb massiive
Pythonis võime loendeid käsitleda massiividena. Kuid me ei saa piirata loendis salvestatud elementide tüüpi. Näiteks:
# elements of different types a = (1, 3.5, "Hello")
Kui loote massiivid array
mooduli abil, peavad kõik massiivi elemendid olema sama numbritüübiga.
import array as arr # Error a = arr.array('d', (1, 3.5, "Hello"))
Väljund
Traceback (most recent call last): File "", line 3, in a = arr.array('d', (1, 3.5, "Hello")) TypeError: must be real number, not str
When to use arrays?
Lists are much more flexible than arrays. They can store elements of different data types including strings. And, if you need to do mathematical computation on arrays and matrices, you are much better off using something like NumPy.
So, what are the uses of arrays created from the Python array module?
The array.array
type is just a thin wrapper on C arrays which provides space-efficient storage of basic C-style data types. If you need to allocate an array that you know will not change, then arrays can be faster and use less memory than lists.
Kui te ei vaja tegelikult massiive (C-koodiga liidestamiseks võib vaja minna massiivimoodulit), pole massiivimooduli kasutamine soovitatav.