Python масив от числови стойности

В този урок ще научите за модула на масив 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 код), използването на модула за масив не се препоръчва.

Интересни статии...