V tomto výučbe sa pomocou príkladov dozviete o module poľa Python, rozdieloch medzi poľami a zoznamami a o tom, ako a kedy ich použiť.
Poznámka: Keď ľudia hovoria polia v Pythone, najčastejšie hovoria o zoznamoch Pythonu . Ak je to váš prípad, navštívte výukový program pre zoznam Python.
V tejto príručke sa zameriame na modul s názvom array
. array
Modul nám umožňuje uložiť súbor číselných hodnôt.
Vytvára sa pole Python
Aby sme vytvorili pole číselných hodnôt, musíme array
modul importovať . Napríklad:
import array as arr a = arr.array('d', (1.1, 3.5, 4.5)) print(a)
Výkon
pole ('d', (1,1; 3,5; 4,5))
Tu sme vytvorili pole float
typu. Písmeno d
je typový kód. Toto určuje typ poľa počas vytvárania.
Bežne používané kódy typov sú uvedené takto:
Zákonníka | Typ C | Typ Pythonu | Min. Bajtov |
---|---|---|---|
b | podpísaný znak | int | 1 |
B | nepodpísaný znak | int | 1 |
u | Py_UNICODE | Unicode | 2 |
h | podpísané krátke | int | 2 |
H | nepodpísané krátke | int | 2 |
i | podpísaná int | int | 2 |
I | nepodpísané int | int | 2 |
l | podpísaná dlho | int | 4 |
L | nepodpísaný dlho | int | 4 |
f | plavák | plavák | 4 |
d | dvojitý | plavák | 8 |
V tomto článku nebudeme rozoberať rôzne typy C. V celom tomto článku použijeme dva typy kódov: i
pre celé čísla a d
pre plaváky.
Poznámka : u
Typový kód pre znaky Unicode je zastaraný od verzie 3.3. Vyhýbajte sa použitiu čo najviac.
Prístup k prvkom poľa Python
Na prístup k prvkom poľa používame indexy:
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ýkon
Prvý prvok: 2 Druhý prvok: 4 Posledný prvok: 8
Poznámka : Index začína od 0 (nie 1) podobne ako zoznamy.
Krájanie polí Pythonu
K množstvu položiek v poli môžeme získať prístup pomocou operátora krájania :
.
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ýkon
pole ('i', (62, 5, 42)) pole ('i', (2, 5, 62)) pole ('i', (52, 48, 5)) pole ('i', (2 , 5, 62, 5, 42, 52, 48, 5))
Zmena a pridanie prvkov
Polia sú premenlivé; ich prvky je možné meniť podobným spôsobom ako zoznamy.
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ýkon
pole ('i', (0, 2, 3, 5, 7, 10)) pole ('i', (0, 2, 4, 6, 8, 10))
Môžeme pridať jednu položku do poľa pomocou append()
metódy, alebo pridať niekoľko položiek pomocou extend()
metódy.
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ýkon
pole ('i', (1, 2, 3, 4)) pole ('i', (1, 2, 3, 4, 5, 6, 7))
Môžeme tiež zreťaziť dve polia pomocou +
operátora.
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ýkon
pole ('i', (1, 3, 5, 2, 4, 6))
Odstránenie prvkov poľa Python
Môžeme vymazať jednu alebo viac položiek z poľa pomocou príkazu del v jazyku Python.
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ýkon
array ('i', (1, 2, 3, 4)) Traceback (posledné volanie posledné): File "", riadok 9, v tlači (number) # Chyba: pole nie je definované NameError: name 'number' is nie je definované
Môžeme použiť remove()
metódu na odstránenie danej položky a pop()
metódu na odstránenie položky v danom indexe.
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ýkon
pole ('i', (10, 11, 12, 13)) pole 12 ('i', (10, 11, 13))
Na tejto stránke nájdete ďalšie informácie o poli Python a metódach poľa.
Python vypíše Vs polia
V Pythone môžeme so zoznamami zaobchádzať ako s poľami. Nemôžeme však obmedziť typ prvkov uložených v zozname. Napríklad:
# elements of different types a = (1, 3.5, "Hello")
Ak vytvárate polia pomocou array
modulu, všetky prvky poľa musia byť rovnakého číselného typu.
import array as arr # Error a = arr.array('d', (1, 3.5, "Hello"))
Výkon
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.
Pokiaľ pole skutočne nepotrebujete (na prepojenie s kódom C môže byť potrebný modul poľa), použitie modulu poľa sa neodporúča.