W tym samouczku dowiesz się o module tablicowym w języku Python, różnicach między tablicami i listami oraz jak i kiedy ich używać, korzystając z przykładów.
Uwaga: Kiedy ludzie mówią tablice w Pythonie, częściej niż nie, mówią o listach Pythona . W takim przypadku odwiedź samouczek dotyczący listy Pythona.
W tym samouczku skupimy się na module o nazwie array
. array
Moduł pozwala nam przechowywać zbiór wartości liczbowych.
Tworzenie tablic w języku Python
Aby stworzyć tablicę wartości liczbowych, musimy zaimportować array
moduł. Na przykład:
import array as arr a = arr.array('d', (1.1, 3.5, 4.5)) print(a)
Wynik
tablica ('d', (1,1; 3,5; 4,5))
Tutaj stworzyliśmy tablicę float
typów. Litera d
jest kodem typu. Określa typ tablicy podczas tworzenia.
Powszechnie używane kody typów są wymienione w następujący sposób:
Kod | Typ C. | Typ Pythona | Min bajtów |
---|---|---|---|
b | podpisany char | int | 1 |
B | unsigned char | int | 1 |
u | Py_UNICODE | Unicode | 2 |
h | podpisał krótko | int | 2 |
H | unsigned short | int | 2 |
i | podpisany int | int | 2 |
I | unsigned int | int | 2 |
l | podpisany długo | int | 4 |
L | unsigned long | int | 4 |
f | pływak | pływak | 4 |
d | podwójnie | pływak | 8 |
W tym artykule nie będziemy omawiać różnych typów języka C. W całym artykule będziemy używać dwóch kodów typów: i
dla liczb całkowitych i d
dla liczb zmiennoprzecinkowych.
Uwaga : u
kod typu znaków Unicode jest nieaktualny od wersji 3.3. Unikaj używania jak najwięcej.
Dostęp do elementów tablicy w języku Python
Używamy indeksów, aby uzyskać dostęp do elementów tablicy:
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))
Wynik
Pierwszy element: 2 Drugi element: 4 Ostatni element: 8
Uwaga : Indeks zaczyna się od 0 (nie 1), podobnie jak listy.
Cięcie tablic Pythona na plasterki
Możemy uzyskać dostęp do szeregu elementów w tablicy za pomocą operatora slicing :
.
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
Wynik
tablica ('i', (62, 5, 42)) tablica ('i', (2, 5, 62)) tablica ('i', (52, 48, 5)) tablica ('i', (2 , 5, 62, 5, 42, 52, 48, 5))
Zmiana i dodawanie elementów
Tablice są zmienne; ich elementy można zmieniać w podobny sposób jak listy.
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))
Wynik
tablica ('i', (0, 2, 3, 5, 7, 10)) tablica ('i', (0, 2, 4, 6, 8, 10))
Możemy dodać jedną pozycję do tablicy za pomocą append()
metody lub dodać kilka pozycji za pomocą extend()
metody.
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))
Wynik
tablica ('i', (1, 2, 3, 4)) tablica ('i', (1, 2, 3, 4, 5, 6, 7))
Możemy również połączyć dwie tablice za pomocą +
operatora.
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)
Wynik
tablica ('i', (1, 3, 5, 2, 4, 6))
Usuwanie elementów tablicy Pythona
Możemy usunąć jeden lub więcej elementów z tablicy za pomocą instrukcji del Pythona.
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
Wynik
array ('i', (1, 2, 3, 4)) Traceback (ostatnie wywołanie ostatnie): Plik "", wiersz 9, w print (numer) # Błąd: tablica nie jest zdefiniowana NameError: name 'number' is Nie określono
Możemy użyć remove()
metody do usunięcia danej pozycji, a pop()
metody do usunięcia pozycji o podanym indeksie.
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))
Wynik
tablica ('i', (10, 11, 12, 13)) 12 tablica ('i', (10, 11, 13))
Sprawdź tę stronę, aby dowiedzieć się więcej o tablicach i metodach tablicowych w języku Python.
Python wyświetla listę tablic Vs
W Pythonie możemy traktować listy jako tablice. Nie możemy jednak ograniczyć typu elementów przechowywanych na liście. Na przykład:
# elements of different types a = (1, 3.5, "Hello")
Jeśli tworzysz tablice za pomocą array
modułu, wszystkie elementy tablicy muszą być tego samego typu liczbowego.
import array as arr # Error a = arr.array('d', (1, 3.5, "Hello"))
Wynik
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.
O ile naprawdę nie potrzebujesz tablic (może być potrzebny moduł tablicowy do połączenia z kodem C), użycie modułu tablicy nie jest zalecane.