В този урок ще научите за модула на масив Python, разликата между масивите и списъците и как и кога да ги използвате с помощта на примери.
Забележка: Когато хората казват масиви в Python, по-често говорят за списъци на Python . Ако случаят е такъв, посетете урока за списък на Python.
В този урок ще се съсредоточим върху модул с име array
. В array
модула ни позволява да се съхранява колекция от числени стойности.
Създаване на Python масиви
За да създадем масив от числови стойности, трябва да импортираме array
модула. Например:
import array as arr a = arr.array('d', (1.1, 3.5, 4.5)) print(a)
Изход
масив ('d', (1.1, 3.5, 4.5))
Тук създадохме масив от float
тип. Буквата d
е код на типа. Това определя вида на масива по време на създаването.
Често използваните типови кодове са изброени, както следва:
Код | C тип | Тип на Python | Мин байтове |
---|---|---|---|
b | подписан знак | инт | 1 |
B | неподписан знак | инт | 1 |
u | Py_UNICODE | Unicode | 2 |
h | подписано кратко | инт | 2 |
H | неподписано кратко | инт | 2 |
i | подписано междун | инт | 2 |
I | неподписан int | инт | 2 |
l | подписано дълго | инт | 4 |
L | неподписано дълго | инт | 4 |
f | плувка | плувка | 4 |
d | двойно | плувка | 8 |
В тази статия няма да обсъждаме различни типове С. Ще използваме два типа кодове в цялата тази статия: i
за цели числа и d
за плувки.
Забележка : u
Типовият код за Unicode символи е остарял от версия 3.3. Избягвайте да използвате колкото е възможно повече.
Достъп до Python Array Elements
Използваме индекси за достъп до елементи на масив:
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))
Изход
Първи елемент: 2 Втори елемент: 4 Последен елемент: 8
Забележка : Индексът започва от 0 (не 1) подобно на списъците.
Нарязване на Python масиви
Можем да получим достъп до набор от елементи в масив, като използваме оператора за нарязване :
.
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
Изход
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))
Промяна и добавяне на елементи
Масивите са променливи; техните елементи могат да се променят по подобен начин като списъците.
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))
Изход
array ('i', (0, 2, 3, 5, 7, 10)) array ('i', (0, 2, 4, 6, 8, 10))
Можем да добавим един елемент към масива, използвайки append()
метода, или да добавим няколко елемента, използвайки extend()
метода.
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))
Изход
array ('i', (1, 2, 3, 4)) array ('i', (1, 2, 3, 4, 5, 6, 7))
Също така можем да обединим два масива с помощта на +
оператор.
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)
Изход
масив („i“, (1, 3, 5, 2, 4, 6))
Премахване на елементи от масив Python
Можем да изтрием един или повече елементи от масив, използвайки декларацията del на 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
Изход
array ('i', (1, 2, 3, 4)) Traceback (последно последно повикване): Файл "", ред 9, в печат (номер) # Грешка: масивът не е определен не е дефиниран
Можем да използваме remove()
метода за премахване на даден елемент и pop()
метод за премахване на елемент с даден индекс.
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))
Изход
array ('i', (10, 11, 12, 13)) 12 array ('i', (10, 11, 13))
Проверете тази страница, за да научите повече за Python масива и методите на масива.
Списъци на Python срещу масиви
В Python можем да третираме списъците като масиви. Не можем обаче да ограничим типа елементи, съхранявани в списък. Например:
# elements of different types a = (1, 3.5, "Hello")
Ако създавате масиви с помощта на array
модула, всички елементи на масива трябва да са от един и същ цифров тип.
import array as arr # Error a = arr.array('d', (1, 3.5, "Hello"))
Изход
Проследяване (последно последно повикване): Файл "", ред 3, в a = arr.array ('d', (1, 3.5, "Hello")) TypeError: трябва да е реално число, а не
Кога да се използват масиви?
Списъците са много по-гъвкави от масивите. Те могат да съхраняват елементи от различни типове данни, включително низове. И ако трябва да направите математическо изчисление на масиви и матрици, много по-добре е да използвате нещо като NumPy.
И така, каква е ползата от масиви, създадени от модула на масива Python?
На array.array
вид е само тънка обвивка на C масиви, който осигурява пространство за ефективно съхранение на основни типа C-стил на данни. Ако трябва да разпределите масив, за който знаете, че няма да се промени, тогава масивите могат да бъдат по-бързи и да използват по-малко памет от списъците.
Освен ако наистина не се нуждаете от масиви (може да е необходим модул за масив за взаимодействие с C код), използването на модула за масив не се препоръчва.