Python Array of Numeric Values

I den här handledningen lär du dig om Python-array-modulen, skillnaden mellan matriser och listor, och hur och när du ska använda dem med hjälp av exempel.

Obs! När människor säger arrays i Python, pratar de oftare om Python-listor . Om så är fallet, besök Python-listhandledningen.

I denna handledning kommer vi att fokusera på en modul som heter array. Den arraymodulen låter oss att lagra en samling numeriska värden.

Skapa Python Arrays

För att skapa en uppsättning numeriska värden måste vi importera arraymodulen. Till exempel:

 import array as arr a = arr.array('d', (1.1, 3.5, 4.5)) print(a)

Produktion

 array ('d', (1.1, 3.5, 4.5))

Här skapade vi en uppsättning floattyp. Brevet där en typkod. Detta avgör typen av matrisen under skapandet.

Vanligt använda typkoder listas enligt följande:

Koda C Typ Python-typ Min byte
b signerad röding int 1
B osignerad röding int 1
u Py_UNICODE Unicode 2
h signerad kort int 2
H osignerad kort int 2
i signerad int int 2
I osignerad int int 2
l signerad lång int 4
L osignerad lång int 4
f flyta flyta 4
d dubbel flyta 8

Vi kommer inte att diskutera olika C-typer i den här artikeln. Vi kommer att använda två typkoder i hela denna artikel: iför heltal och dför flottörer.

Obs : Den utyp koden för Unicode-tecken är föråldrat sedan version 3.3. Undvik att använda så mycket som möjligt.

Åtkomst till Python Array Elements

Vi använder index för att komma åt element i en matris:

 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))

Produktion

 Första element: 2 Andra element: 4 Sista element: 8

Obs : Indexet börjar från 0 (inte 1) som listor.

Skivning av Python Arrays

Vi kan komma åt en rad artiklar i en matris med hjälp av skivoperatören :.

 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

Produktion

 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))

Ändra och lägga till element

Arrayer är mutabla; deras element kan ändras på samma sätt som listor.

 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))

Produktion

 array ('i', (0, 2, 3, 5, 7, 10)) array ('i', (0, 2, 4, 6, 8, 10))

Vi kan lägga till ett objekt i matrisen med append()metoden eller lägga till flera objekt med extend()metoden.

 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))

Produktion

 array ('i', (1, 2, 3, 4)) array ('i', (1, 2, 3, 4, 5, 6, 7))

Vi kan också sammanfoga två matriser med hjälp av +operatören.

 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)

Produktion

 array ('i', (1, 3, 5, 2, 4, 6)) 

Removing Python Array Elements

We can delete one or more items from an array using Python's del statement.

 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

Output

 array('i', (1, 2, 3, 4)) Traceback (most recent call last): File "", line 9, in print(number) # Error: array is not defined NameError: name 'number' is not defined

We can use the remove() method to remove the given item, and pop() method to remove an item at the given index.

 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))

Output

 array('i', (10, 11, 12, 13)) 12 array('i', (10, 11, 13))

Check this page to learn more about Python array and array methods.

Python Lists Vs Arrays

In Python, we can treat lists as arrays. However, we cannot constrain the type of elements stored in a list. For example:

 # elements of different types a = (1, 3.5, "Hello") 

If you create arrays using the array module, all elements of the array must be of the same numeric type.

 import array as arr # Error a = arr.array('d', (1, 3.5, "Hello"))

Output

 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.

Om du inte egentligen behöver matriser (matrismodul kan behövas för att gränssnitt med C-kod) rekommenderas inte användning av matrismodul.

Intressanta artiklar...