Python niz numeričkih vrijednosti

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. arrayModul nam omogućava spremanje zbirku numeričkih vrijednosti.

Stvaranje Python nizova

Da bismo stvorili niz numeričkih vrijednosti, moramo uvesti arraymodul. 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 floatvrsta. Slovo dje š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: iza cijele brojeve i dza plutajuće brojeve .

Napomena : Kôd utipa 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 arraymodula, 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.

Zanimljivi članci...