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 array
modulen 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 array
modulen. 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 float
typ. 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: i
för heltal och d
för flottörer.
Obs : Den u
typ 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.