Šajā apmācībā jūs uzzināsit par Python masīva moduli, atšķirību starp masīviem un sarakstiem un to, kā un kad tos izmantot, izmantojot piemērus.
Piezīme: Kad cilvēki saka masīvus Python, viņi biežāk runā par Python sarakstiem . Ja tas tā ir, apmeklējiet Python saraksta apmācību.
Šajā apmācībā mēs koncentrēsimies uz moduli ar nosaukumu array
. array
Modulis ļauj mums uzglabāt kolekciju skaitliskām vērtībām.
Python masīvu izveide
Lai izveidotu skaitlisko vērtību masīvu, mums ir jāimportē array
modulis. Piemēram:
import array as arr a = arr.array('d', (1.1, 3.5, 4.5)) print(a)
Rezultāts
masīvs ('d', (1.1, 3.5, 4.5))
Šeit mēs izveidojām float
tipa masīvu . Burts d
ir tipa kods. Tas nosaka masīva veidu izveidošanas laikā.
Parasti izmantotie tipa kodi ir uzskaitīti šādi:
Kods | C tips | Python tips | Min. Baiti |
---|---|---|---|
b | parakstīts char | int | 1 |
B | neparakstīta char | int | 1 |
u | Py_UNICODE | Unicode | 2 |
h | parakstīts īss | int | 2 |
H | neparakstīts īss | int | 2 |
i | parakstīts int | int | 2 |
I | neparakstīts int | int | 2 |
l | parakstīts ilgi | int | 4 |
L | neparakstīts ilgi | int | 4 |
f | peldēt | peldēt | 4 |
d | dubultā | peldēt | 8 |
Šajā rakstā mēs neapspriedīsim dažādus C tipus. Šajā visā rakstā mēs izmantosim divu veidu kodus: i
veseliem skaitļiem un d
pludiņiem.
Piezīme : u
Unicode rakstzīmju tipa kods ir novecojis kopš 3.3 versijas. Izvairieties izmantot pēc iespējas vairāk.
Piekļuve Python masīva elementiem
Mēs izmantojam indeksus, lai piekļūtu masīva elementiem:
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))
Rezultāts
Pirmais elements: 2 Otrais elements: 4 Pēdējais elements: 8
Piezīme : Indekss sākas ar 0 (nevis 1), kas līdzīgs sarakstiem.
Python masīvu sagriešana
Mēs varam piekļūt masīva vienumu klāstam, izmantojot sagriešanas operatoru :
.
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
Rezultāts
masīvs ('i', (62, 5, 42)) masīvs ('i', (2, 5, 62)) masīvs ('i', (52, 48, 5)) masīvs ('i', (2 (5, 62, 5, 42, 52, 48, 5)
Elementu maiņa un pievienošana
Masīvi ir maināmi; to elementus var mainīt līdzīgi kā sarakstus.
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))
Rezultāts
masīvs ('i', (0, 2, 3, 5, 7, 10)) masīvs ('i', (0, 2, 4, 6, 8, 10))
Mēs varam pievienot masīvam vienu vienumu, izmantojot append()
metodi, vai pievienot vairākus vienumus, izmantojot extend()
metodi.
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))
Rezultāts
masīvs ('i', (1, 2, 3, 4)) masīvs ('i', (1, 2, 3, 4, 5, 6, 7))
Izmantojot +
operatoru, mēs varam arī savienot divus masīvus .
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)
Rezultāts
masīvs ('i', (1, 3, 5, 2, 4, 6))
Python masīva elementu noņemšana
Mēs varam izdzēst vienu vai vairākus vienumus no masīva, izmantojot Python del paziņojumu.
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
Rezultāts
masīvs ('i', (1, 2, 3, 4)) Traceback (pēdējais zvans pēdējais): Fails "", 9. rinda, drukā (numurs) # Kļūda: masīvs nav definēts NameError: name 'number' is nav definēts
Mēs varam izmantot remove()
metodi, lai noņemtu doto vienumu, un pop()
metodi, lai noņemtu vienumu no norādītā indeksa.
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))
Rezultāts
masīvs ('i', (10, 11, 12, 13)) 12 masīvs ('i', (10, 11, 13))
Pārbaudiet šo lapu, lai uzzinātu vairāk par Python masīva un masīva metodēm.
Python saraksti Vs masīvi
Python mēs varam traktēt sarakstus kā masīvus. Tomēr mēs nevaram ierobežot sarakstā saglabāto elementu tipu. Piemēram:
# elements of different types a = (1, 3.5, "Hello")
Ja veidojat masīvus, izmantojot array
moduli, visiem masīva elementiem jābūt vienādam ar ciparu tipu.
import array as arr # Error a = arr.array('d', (1, 3.5, "Hello"))
Rezultāts
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.
Ja vien jums patiešām nav nepieciešami masīvi (masīva modulis var būt nepieciešams, lai saskarētos ar C kodu), masīva moduļa lietošana nav ieteicama.