In deze zelfstudie leer je over de Python-array-module, het verschil tussen arrays en lijsten en hoe en wanneer je ze kunt gebruiken met behulp van voorbeelden.
Opmerking: wanneer mensen arrays in Python zeggen, hebben ze het vaker wel dan niet over Python-lijsten . Als dat het geval is, ga dan naar de Python-lijst tutorial.
In deze tutorial zullen we ons concentreren op een module met de naam array
. Met de array
module kunnen we een verzameling numerieke waarden opslaan.
Python-arrays maken
Om een reeks numerieke waarden te maken, moeten we de array
module importeren . Bijvoorbeeld:
import array as arr a = arr.array('d', (1.1, 3.5, 4.5)) print(a)
Uitvoer
matrix ('d', (1.1, 3.5, 4.5))
Hier hebben we een reeks float
typen gemaakt. De letter d
is een typecode. Dit bepaalt het type array tijdens het maken.
Veelgebruikte typecodes worden als volgt weergegeven:
Code | C Type | Python-type | Min. Bytes |
---|---|---|---|
b | ondertekende char | int | 1 |
B | Ongetekend char | int | 1 |
u | Py_UNICODE | Unicode | 2 |
h | kort getekend | int | 2 |
H | ongetekend kort | int | 2 |
i | ondertekend int | int | 2 |
I | unsigned int | int | 2 |
l | lang getekend | int | 4 |
L | lang ongetekend | int | 4 |
f | vlotter | vlotter | 4 |
d | dubbele | vlotter | 8 |
We zullen in dit artikel geen verschillende C-typen bespreken. We zullen in dit hele artikel twee typecodes gebruiken: i
voor gehele getallen en d
voor floats.
Opmerking : de u
typecode voor Unicode-tekens is verouderd sinds versie 3.3. Vermijd zoveel mogelijk gebruik.
Toegang krijgen tot Python Array Elements
We gebruiken indices om toegang te krijgen tot elementen van een array:
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))
Uitvoer
Eerste element: 2 Tweede element: 4 Laatste element: 8
Opmerking : de index begint bij 0 (niet 1), vergelijkbaar met lijsten.
Python-arrays snijden
We hebben toegang tot een reeks items in een array met behulp van de slicing-operator :
.
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
Uitvoer
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))
Elementen wijzigen en toevoegen
Arrays zijn veranderlijk; hun elementen kunnen op dezelfde manier worden gewijzigd als lijsten.
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))
Uitvoer
array ('i', (0, 2, 3, 5, 7, 10)) array ('i', (0, 2, 4, 6, 8, 10))
We kunnen één item aan de array toevoegen met behulp van de append()
methode, of meerdere items toevoegen met behulp van de extend()
methode.
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))
Uitvoer
array ('i', (1, 2, 3, 4)) array ('i', (1, 2, 3, 4, 5, 6, 7))
We kunnen ook twee arrays samenvoegen met de +
operator.
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)
Uitvoer
matrix ('i', (1, 3, 5, 2, 4, 6))
Python-array-elementen verwijderen
We kunnen een of meer items uit een array verwijderen met de instructie del van 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
Uitvoer
array ('i', (1, 2, 3, 4)) Traceback (meest recente oproep laatste): Bestand "", regel 9, in print (nummer) # Fout: array is niet gedefinieerd NameError: naam 'nummer' is niet gedefinieerd
We kunnen de remove()
methode gebruiken om het gegeven item te verwijderen, en de pop()
methode om een item bij de gegeven index te verwijderen.
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))
Uitvoer
array ('i', (10, 11, 12, 13)) 12 array ('i', (10, 11, 13))
Bekijk deze pagina voor meer informatie over Python-array- en arraymethoden.
Python-lijsten versus arrays
In Python kunnen we lijsten behandelen als arrays. We kunnen het type elementen dat in een lijst is opgeslagen echter niet beperken. Bijvoorbeeld:
# elements of different types a = (1, 3.5, "Hello")
Als u arrays maakt met behulp van de array
module, moeten alle elementen van de array van hetzelfde numerieke type zijn.
import array as arr # Error a = arr.array('d', (1, 3.5, "Hello"))
Uitvoer
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.
Tenzij u niet echt arrays nodig heeft (array-module kan nodig zijn om te communiceren met C-code), wordt het gebruik van de array-module niet aanbevolen.