V tej vadnici boste s pomočjo primerov spoznali modul matrike Python, razliko med nizi in seznami ter kako in kdaj jih uporabiti.
Opomba: Ko ljudje v Pythonu rečejo polja, pogosteje govorijo o Pythonovih seznamih . V tem primeru obiščite vadnico za seznam Python.
V tej vadnici se bomo osredotočili na modul z imenom array
. array
Modul nam omogoča, da shranite zbirko številčne vrednosti.
Ustvarjanje Python nizov
Če želite ustvariti niz številskih vrednosti, moramo uvoziti array
modul. Na primer:
import array as arr a = arr.array('d', (1.1, 3.5, 4.5)) print(a)
Izhod
matrika ('d', (1.1, 3.5, 4.5))
Tu smo ustvarili vrsto float
vrst. Črka d
je tipska koda. To določa vrsto matrike med ustvarjanjem.
Pogosto uporabljene tipske kode so navedene na naslednji način:
Koda | Tip C | Python Type | Najmanj bajtov |
---|---|---|---|
b | podpisan znak | int | 1. |
B | nepodpisani znak | int | 1. |
u | Py_UNICODE | Unicode | 2. |
h | podpisano kratko | int | 2. |
H | nepodpisana kratka | int | 2. |
i | podpisan medn | int | 2. |
I | nepodpisani int | int | 2. |
l | podpisal dolgo | int | 4. |
L | nepodpisano dolgo | int | 4. |
f | float | float | 4. |
d | dvojno | float | 8. |
V tem članku ne bomo razpravljali o različnih vrstah C. V celotnem članku bomo uporabili dve vrsti kod: i
za cela števila in d
za float.
Opomba : Koda u
vrste za znake Unicode je zastarela od različice 3.3. Izogibajte se čim večji uporabi.
Dostop do elementov matrike Python
Za dostop do elementov matrike uporabljamo indekse:
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))
Izhod
Prvi element: 2 Drugi element: 4 Zadnji element: 8
Opomba : Indeks se začne od 0 (ne 1) podobno kot pri seznamih.
Rezanje nizov Python
Do številnih elementov v matriki lahko dostopamo z operaterjem rezanja :
.
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
Izhod
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))
Spreminjanje in dodajanje elementov
Nizi so spremenljivi; njihove elemente je mogoče spreminjati na podoben način kot sezname.
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))
Izhod
array ('i', (0, 2, 3, 5, 7, 10)) array ('i', (0, 2, 4, 6, 8, 10))
V matriko lahko z append()
metodo dodamo en element ali pa z metodo dodamo več elementov 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))
Izhod
array ('i', (1, 2, 3, 4)) array ('i', (1, 2, 3, 4, 5, 6, 7))
Z uporabo +
operatorja lahko združimo tudi dva polja .
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)
Izhod
matrika ('i', (1, 3, 5, 2, 4, 6))
Odstranjevanje elementov matrike Python
Z uporabo Pythonovega izkaza del lahko iz matrike izbrišemo enega ali več elementov.
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
Izhod
array ('i', (1, 2, 3, 4)) Traceback (zadnji zadnji klic): Datoteka "", vrstica 9, v tisku (številka) # Napaka: polje ni določeno ni opredeljeno
remove()
Metodo lahko uporabimo za odstranitev danega elementa in pop()
metodo za odstranjevanje elementa v danem indeksu.
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))
Izhod
array ('i', (10, 11, 12, 13)) 12 array ('i', (10, 11, 13))
Na tej strani lahko izveste več o Python matriki in metodah matrike.
Python Seznami Vs Nizov
V Pythonu lahko sezname obravnavamo kot nize. Vendar ne moremo omejiti vrste elementov, shranjenih na seznamu. Na primer:
# elements of different types a = (1, 3.5, "Hello")
Če z array
modulom ustvarite polja , morajo biti vsi elementi polja istega številskega tipa.
import array as arr # Error a = arr.array('d', (1, 3.5, "Hello"))
Izhod
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.
Če matric v resnici ne potrebujete (za povezavo s kodo C je morda potreben modul matrike), uporaba modula matrike ni priporočljiva.