Python-array van numerieke waarden

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 arraymodule kunnen we een verzameling numerieke waarden opslaan.

Python-arrays maken

Om een ​​reeks numerieke waarden te maken, moeten we de arraymodule 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 floattypen gemaakt. De letter dis 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: ivoor gehele getallen en dvoor floats.

Opmerking : de utypecode 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 arraymodule, 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.

Interessante artikelen...