U ovom vodiču naučit ćete o Python modulu niza, razlici između polja i popisa te kako i kada ih koristiti uz pomoć primjera.
Napomena: Kada ljudi kažu nizove na Pythonu, češće nego ne, oni govore o Python popisima . Ako je to slučaj, posjetite vodič za popis Python.
U ovom uputstvu usredotočit ćemo se na modul s imenom array
. array
Modul nam omogućava spremanje zbirku numeričkih vrijednosti.
Stvaranje Python nizova
Da bismo stvorili niz numeričkih vrijednosti, moramo uvesti array
modul. Na primjer:
import array as arr a = arr.array('d', (1.1, 3.5, 4.5)) print(a)
Izlaz
niz ('d', (1.1, 3.5, 4.5))
Ovdje smo stvorili niz float
vrsta. Slovo d
je šifra vrste. To određuje vrstu polja tijekom stvaranja.
Šifre tipova koje se najčešće koriste navedeni su na sljedeći način:
Kodirati | Tip C | Python Type | Min bajtova |
---|---|---|---|
b | potpisani char | int | 1 |
B | nepotpisani char | int | 1 |
u | Py_UNICODE | Unicode | 2 |
h | potpisan kratko | int | 2 |
H | nepotpisani kratki | int | 2 |
i | potpisao međ | int | 2 |
I | nepotpisani int | int | 2 |
l | potpisan dugo | int | 4 |
L | nepotpisano dugo | int | 4 |
f | plutati | plutati | 4 |
d | dvostruko | plutati | 8 |
U ovom članku nećemo raspravljati o različitim vrstama C. U cijelom ćemo ovom članku upotrijebiti dvije šifre vrsta: i
za cijele brojeve i d
za plutajuće brojeve .
Napomena : Kôd u
tipa za Unicode znakove zastario je od verzije 3.3. Izbjegavajte koristiti što je više moguće.
Pristup elementima niza Python
Koristimo indekse za pristup elementima niza:
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))
Izlaz
Prvi element: 2 Drugi element: 4 Posljednji element: 8
Napomena : Indeks započinje od 0 (a ne 1) slično popisima.
Rezanje Python polja
Pomoću operatora rezanja možemo pristupiti nizu stavki u nizu :
.
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
Izlaz
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))
Promjena i dodavanje elemenata
Nizovi su promjenjivi; njihovi se elementi mogu mijenjati na sličan način kao i popisi.
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))
Izlaz
niz ('i', (0, 2, 3, 5, 7, 10)) niz ('i', (0, 2, 4, 6, 8, 10))
Pomoću append()
metode možemo dodati jednu stavku u niz ili dodati nekoliko stavki pomoću extend()
metode.
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))
Izlaz
niz ('i', (1, 2, 3, 4)) niz ('i', (1, 2, 3, 4, 5, 6, 7))
Također možemo povezati dva niza pomoću +
operatora.
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)
Izlaz
niz ('i', (1, 3, 5, 2, 4, 6))
Uklanjanje elemenata niza Python
Možemo izbrisati jednu ili više stavki iz niza pomoću Pythonovog del izraza.
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
Izlaz
niz ('i', (1, 2, 3, 4)) Traceback (najnoviji zadnji poziv): Datoteka "", redak 9, u ispisu (broj) # Pogreška: niz nije definiran NameError: ime 'broj' je nije definirano
remove()
Metodu možemo koristiti za uklanjanje zadane stavke i pop()
metodu za uklanjanje stavke s danim indeksom.
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))
Izlaz
niz ('i', (10, 11, 12, 13)) 12 niz ('i', (10, 11, 13))
Pogledajte ovu stranicu da biste saznali više o Python nizovima i metodama polja.
Python popisi vs nizovi
U Pythonu popise možemo tretirati kao nizove. Međutim, ne možemo ograničiti vrstu elemenata pohranjenih na popisu. Na primjer:
# elements of different types a = (1, 3.5, "Hello")
Ako stvarate nizove pomoću array
modula, svi elementi niza moraju biti istog numeričkog tipa.
import array as arr # Error a = arr.array('d', (1, 3.5, "Hello"))
Izlaz
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.
Ako vam zapravo nisu potrebni nizovi (za povezivanje s C kodom možda će biti potreban modul niza), ne preporučuje se uporaba modula niza.