Trong bài viết này, bạn sẽ học cách sử dụng mảng trong Python. Bạn sẽ thấy cách xác định chúng và các phương pháp khác nhau thường được sử dụng để thực hiện các thao tác trên chúng.
Artcile bao gồm các mảng mà bạn tạo bằng cách nhập array module
. Chúng tôi sẽ không đề cập đến các mảng NumPy ở đây.
Mục lục
- Giới thiệu về mảng
- Sự khác biệt giữa Danh sách và Mảng
- Khi nào sử dụng mảng
- Cách sử dụng mảng
- Xác định mảng
- Tìm độ dài của mảng
- Lập chỉ mục mảng
- Tìm kiếm thông qua các mảng
- Lặp qua các mảng
- Cắt một mảng
- Các phương thức mảng để thực hiện các hoạt động
- Thay đổi một giá trị hiện có
- Thêm một giá trị mới
- Xóa một giá trị
- Phần kết luận
Bắt đầu nào!
Mảng Python là gì?
Mảng là một cấu trúc dữ liệu cơ bản và là một phần quan trọng của hầu hết các ngôn ngữ lập trình. Trong Python, chúng là các thùng chứa có thể lưu trữ nhiều mục cùng một lúc.
Cụ thể, chúng là một tập hợp các phần tử được sắp xếp theo thứ tự với mọi giá trị thuộc cùng một kiểu dữ liệu. Đó là điều quan trọng nhất cần nhớ về mảng Python – thực tế là chúng chỉ có thể chứa một chuỗi nhiều mục cùng loại.
Sự khác biệt giữa Danh sách Python và Mảng Python là gì?
Danh sách là một trong những cấu trúc dữ liệu phổ biến nhất trong Python và là phần cốt lõi của ngôn ngữ.
Danh sách và mảng hoạt động tương tự nhau.
Cũng giống như mảng, danh sách là một dãy các phần tử được sắp xếp theo thứ tự.
Chúng cũng có thể thay đổi và không cố định về kích thước, nghĩa là chúng có thể phát triển và thu nhỏ trong suốt vòng đời của chương trình. Các mục có thể được thêm và xóa, làm cho chúng rất linh hoạt để làm việc.
Tuy nhiên, danh sách và mảng là không phải giống nhau cả thôi.
danh sách lưu trữ các mặt hàng của các loại dữ liệu khác nhau. Điều này có nghĩa là một danh sách có thể chứa đồng thời các số nguyên, số dấu phẩy động, chuỗi hoặc bất kỳ loại dữ liệu Python nào khác. Đó không phải là trường hợp với mảng.
Như đã đề cập ở phần trên, mảng chỉ lưu trữ các mặt hàng thuộc về cùng một kiểu dữ liệu. Có những mảng chỉ chứa số nguyên hoặc chỉ số dấu phẩy động hoặc chỉ bất kỳ loại dữ liệu Python nào khác mà bạn muốn sử dụng.
Khi nào nên sử dụng mảng Python
Danh sách được tích hợp vào ngôn ngữ lập trình Python, trong khi mảng thì không. Mảng không phải là cấu trúc dữ liệu tích hợp và do đó cần phải được nhập thông qua array module
để được sử dụng.
Mảng của array module
là một trình bao bọc mỏng trên các mảng C và rất hữu ích khi bạn muốn làm việc với dữ liệu đồng nhất.
Chúng cũng nhỏ gọn hơn và chiếm ít bộ nhớ cũng như không gian hơn, giúp chúng có kích thước hiệu quả hơn so với danh sách.
Nếu bạn muốn thực hiện các phép tính toán học, thì bạn nên sử dụng mảng NumPy bằng cách nhập gói NumPy. Bên cạnh đó, bạn chỉ nên sử dụng mảng Python khi thực sự cần, vì danh sách hoạt động theo cách tương tự và linh hoạt hơn khi làm việc.
Cách sử dụng mảng trong Python
Để tạo mảng Python, trước tiên bạn phải nhập array module
trong đó có tất cả các chức năng cần thiết.
Có ba cách bạn có thể nhập array module
:
- Bằng cách sử dụng
import array
ở đầu tệp. Điều này bao gồm mô-đunarray
. Sau đó, bạn sẽ tiếp tục tạo một mảng bằng cách sử dụngarray.array()
.
import array
#how you would create an array
array.array()
- Thay vì phải gõ
array.array()
mọi lúc, bạn có thể sử dụngimport array as arr
ở đầu tệp, thay vìimport array
một mình. Sau đó, bạn sẽ tạo một mảng bằng cách gõarr.array()
. Cácarr
hoạt động như một tên bí danh, với hàm tạo mảng ngay sau nó.
import array as arr
#how you would create an array
arr.array()
- Cuối cùng, bạn cũng có thể sử dụng
from array import *
với*
nhập tất cả các chức năng có sẵn. Sau đó, bạn sẽ tạo một mảng bằng cách viếtarray()
nhà xây dựng một mình.
from array import *
#how you would create an array
array()
Cách xác định mảng trong Python
Khi bạn đã nhập array module
thì bạn có thể tiếp tục xác định một mảng Python.
Cú pháp chung để tạo một mảng như sau:
variable_name = array(typecode,[elements])
Hãy chia nhỏ nó ra:
variable_name
sẽ là tên của mảng.- Các
typecode
chỉ định loại phần tử nào sẽ được lưu trữ trong mảng. Cho dù đó là một mảng các số nguyên, một mảng các số float hay một mảng của bất kỳ kiểu dữ liệu Python nào khác. Hãy nhớ rằng tất cả các phần tử phải có cùng kiểu dữ liệu. - Bên trong ngoặc vuông bạn đề cập đến
elements
sẽ được lưu trữ trong mảng, với mỗi phần tử được phân tách bằng dấu phẩy. Bạn cũng có thể tạo một trống rỗng mảng bằng cách chỉ viếtvariable_name = array(typecode)
một mình, không có bất kỳ yếu tố nào.
Dưới đây là bảng mã kiểu, với các kiểu mã khác nhau có thể được sử dụng với các kiểu dữ liệu khác nhau khi xác định mảng Python:
đánh máy | loại C | Loại trăn | Kích thước |
---|---|---|---|
‘b’ | ký tự | int | 1 |
‘B’ | ký tự không dấu | int | 1 |
‘bạn’ | wchar_t | Ký tự Unicode | 2 |
‘h’ | ký tắt | int | 2 |
‘H’ | ngắn không dấu | int | 2 |
‘tôi’ | ký int | int | 2 |
‘TÔI’ | int không dấu | int | 2 |
‘tôi’ | ký dài | int | 4 |
‘l’ | không dấu dài | int | 4 |
‘q’ | đã ký lâu dài | int | số 8 |
‘Q’ | không dấu lâu dài | int | số 8 |
‘f’ | trôi nổi | trôi nổi | 4 |
‘d’ | gấp đôi | trôi nổi | số 8 |
Liên kết mọi thứ lại với nhau, đây là một ví dụ về cách bạn định nghĩa một mảng trong Python:
import array as arr
numbers = arr.array('i',[10,20,30])
print(numbers)
#output
#array('i', [10, 20, 30])
Hãy chia nhỏ nó ra:
- Đầu tiên, chúng tôi đưa vào mô-đun mảng, trong trường hợp này là với
import array as arr
. - Sau đó, chúng tôi đã tạo ra một
numbers
mảng. - Chúng tôi đã sử dụng
arr.array()
bởi vìimport array as arr
. - Bên trong
array()
nhà xây dựng, trước tiên chúng tôi bao gồmi
, cho số nguyên đã ký. Số nguyên đã ký có nghĩa là mảng có thể bao gồm số dương và giá trị âm. Số nguyên không dấu, vớiH
chẳng hạn, có nghĩa là không cho phép giá trị âm nào. - Cuối cùng, chúng tôi đã bao gồm các giá trị sẽ được lưu trữ trong mảng trong dấu ngoặc vuông.
Hãy nhớ rằng nếu bạn đã cố gắng đưa vào các giá trị không thuộc về i
typecode, nghĩa là chúng không phải là giá trị số nguyên, bạn sẽ gặp lỗi:
import array as arr
numbers = arr.array('i',[10.0,20,30])
print(numbers)
#output
#Traceback (most recent call last):
# File "/Users/dionysialemonaki/python_articles/demo.py", line 14, in <module>
# numbers = arr.array('i',[10.0,20,30])
#TypeError: 'float' object cannot be interpreted as an integer
Trong ví dụ trên, tôi đã cố gắng đưa một số dấu phẩy động vào mảng. Tôi gặp lỗi vì đây chỉ là một mảng số nguyên.
Một cách khác để tạo một mảng như sau:
from array import *
#an array of floating point values
numbers = array('d',[10.0,20.0,30.0])
print(numbers)
#output
#array('d', [10.0, 20.0, 30.0])
Ví dụ trên đã nhập array module
qua from array import *
và tạo ra một mảng numbers
của kiểu dữ liệu float. Điều này có nghĩa là nó chỉ chứa các số dấu phẩy động, được chỉ định với 'd'
mã đánh máy.
Cách tìm độ dài của một mảng trong Python
Để biết chính xác số lượng phần tử có trong một mảng, hãy sử dụng công cụ tích hợp sẵn len()
phương pháp.
Nó sẽ trả về số nguyên bằng tổng số phần tử trong mảng mà bạn chỉ định.
import array as arr
numbers = arr.array('i',[10,20,30])
print(len(numbers))
#output
# 3
Trong ví dụ trên, mảng chứa ba phần tử – 10, 20, 30
– vậy độ dài của numbers
Là 3
.
Lập chỉ mục mảng và cách truy cập các mục riêng lẻ trong một mảng bằng Python
Mỗi mục trong một mảng có một địa chỉ cụ thể. Các mục riêng lẻ được truy cập bằng cách tham chiếu số chỉ mục.
Lập chỉ mục trong Python và trong tất cả các ngôn ngữ lập trình và điện toán nói chung, bắt đầu từ . Điều quan trọng cần nhớ là việc đếm bắt đầu từ
và không phải tại
1
.
Để truy cập một phần tử, trước tiên bạn viết tên của mảng theo sau là dấu ngoặc vuông. Bên trong dấu ngoặc vuông, bạn bao gồm số chỉ mục của mục.
Cú pháp chung sẽ giống như thế này:
array_name[index_value_of_item]
Đây là cách bạn sẽ truy cập từng phần tử riêng lẻ trong một mảng:
import array as arr
numbers = arr.array('i',[10,20,30])
print(numbers[0]) # gets the 1st element
print(numbers[1]) # gets the 2nd element
print(numbers[2]) # gets the 3rd element
#output
#10
#20
#30
Hãy nhớ rằng giá trị chỉ mục của phần tử cuối cùng của một mảng luôn nhỏ hơn một giá trị so với độ dài của mảng. Ở đâu n
là độ dài của mảng, n - 1
sẽ là giá trị chỉ mục của mục cuối cùng.
Lưu ý rằng bạn cũng có thể truy cập từng phần tử riêng lẻ bằng cách sử dụng lập chỉ mục phủ định.
Với lập chỉ mục phủ định, phần tử cuối cùng sẽ có chỉ mục là -1
phần tử thứ hai đến phần tử cuối cùng sẽ có chỉ số là -2
và như thế.
Đây là cách bạn sẽ lấy từng mục trong một mảng bằng phương thức đó:
import array as arr
numbers = arr.array('i',[10,20,30])
print(numbers[-1]) #gets last item
print(numbers[-2]) #gets second to last item
print(numbers[-3]) #gets first item
#output
#30
#20
#10
Cách tìm kiếm thông qua một mảng trong Python
Bạn có thể tìm ra số chỉ mục của một phần tử bằng cách sử dụng index()
phương pháp.
Bạn chuyển giá trị của phần tử đang được tìm kiếm làm đối số cho phương thức và số chỉ mục của phần tử được trả về.
import array as arr
numbers = arr.array('i',[10,20,30])
#search for the index of the value 10
print(numbers.index(10))
#output
#0
Nếu có nhiều hơn một phần tử có cùng giá trị, chỉ mục của phiên bản đầu tiên của giá trị sẽ được trả về:
import array as arr
numbers = arr.array('i',[10,20,30,10,20,30])
#search for the index of the value 10
#will return the index number of the first instance of the value 10
print(numbers.index(10))
#output
#0
Cách lặp qua một mảng trong Python
Bạn đã biết cách truy cập từng phần tử riêng lẻ trong một mảng và tự in nó ra.
Bạn cũng đã thấy cách in mảng, sử dụng print()
phương pháp. Phương pháp đó cho kết quả như sau:
import array as arr
numbers = arr.array('i',[10,20,30])
print(numbers)
#output
#array('i', [10, 20, 30])
Nếu bạn muốn in từng giá trị một thì sao?
Đây là nơi một vòng lặp có ích. Bạn có thể lặp qua mảng và in ra từng giá trị, từng giá trị một, với mỗi lần lặp lại vòng lặp.
Đối với điều này, bạn có thể sử dụng một cách đơn giản for
vòng:
import array as arr
numbers = arr.array('i',[10,20,30])
for number in numbers:
print(number)
#output
#10
#20
#30
Bạn cũng có thể sử dụng range()
chức năng và vượt qua len()
phương thức làm tham số của nó. Điều này sẽ cho kết quả tương tự như trên:
import array as arr
values = arr.array('i',[10,20,30])
#prints each individual value in the array
for value in range(len(values)):
print(values[value])
#output
#10
#20
#30
Cách cắt một mảng trong Python
Để truy cập một phạm vi giá trị cụ thể bên trong mảng, hãy sử dụng toán tử cắt, là dấu hai chấm :
.
Khi sử dụng toán tử cắt và bạn chỉ bao gồm một giá trị, quá trình đếm bắt đầu từ theo mặc định. Nó lấy mục đầu tiên và tăng lên nhưng không bao gồm số chỉ mục bạn chỉ định.
import array as arr
#original array
numbers = arr.array('i',[10,20,30])
#get the values 10 and 20 only
print(numbers[:2]) #first to second position
#output
#array('i', [10, 20])
Khi bạn chuyển hai số làm đối số, bạn chỉ định một dãy số. Trong trường hợp này, quá trình đếm bắt đầu từ vị trí của số đầu tiên trong phạm vi và tối đa nhưng không bao gồm số thứ hai:
import array as arr
#original array
numbers = arr.array('i',[10,20,30])
#get the values 20 and 30 only
print(numbers[1:3]) #second to third position
#output
#rray('i', [20, 30])
Phương pháp thực hiện các thao tác trên mảng trong Python
Mảng có thể thay đổi, có nghĩa là chúng có thể thay đổi được. Bạn có thể thay đổi giá trị của các mục khác nhau, thêm mục mới hoặc xóa bất kỳ mục nào bạn không muốn trong chương trình của mình nữa.
Hãy xem một số phương thức được sử dụng phổ biến nhất để thực hiện các thao tác trên mảng.
Cách thay đổi giá trị của một mục trong một mảng
Bạn có thể thay đổi giá trị của một phần tử cụ thể bằng cách chỉ định vị trí của nó và gán cho nó một giá trị mới:
import array as arr
#original array
numbers = arr.array('i',[10,20,30])
#change the first element
#change it from having a value of 10 to having a value of 40
numbers[0] = 40
print(numbers)
#output
#array('i', [40, 20, 30])
Cách thêm một giá trị mới vào một mảng
Để thêm một giá trị duy nhất vào cuối một mảng, hãy sử dụng append()
phương pháp:
import array as arr
#original array
numbers = arr.array('i',[10,20,30])
#add the integer 40 to the end of numbers
numbers.append(40)
print(numbers)
#output
#array('i', [10, 20, 30, 40])
Xin lưu ý rằng mục mới mà bạn thêm cần phải có cùng kiểu dữ liệu với các mục còn lại trong mảng.
Hãy xem điều gì sẽ xảy ra khi tôi cố gắng thêm một số float vào một mảng số nguyên:
import array as arr
#original array
numbers = arr.array('i',[10,20,30])
#add the integer 40 to the end of numbers
numbers.append(40.0)
print(numbers)
#output
#Traceback (most recent call last):
# File "/Users/dionysialemonaki/python_articles/demo.py", line 19, in <module>
# numbers.append(40.0)
#TypeError: 'float' object cannot be interpreted as an integer
Nhưng nếu bạn muốn thêm nhiều hơn một giá trị vào cuối một mảng thì sao?
Sử dụng extend()
phương thức này nhận một đối số có thể lặp lại (chẳng hạn như danh sách các mục). Một lần nữa, đảm bảo rằng các mục mới đều có cùng kiểu dữ liệu.
import array as arr
#original array
numbers = arr.array('i',[10,20,30])
#add the integers 40,50,60 to the end of numbers
#The numbers need to be enclosed in square brackets
numbers.extend([40,50,60])
print(numbers)
#output
#array('i', [10, 20, 30, 40, 50, 60])
Và nếu bạn không muốn thêm một mục vào cuối mảng thì sao? Sử dụng insert()
phương pháp, để thêm một mục tại một vị trí cụ thể.
Các insert()
hàm nhận hai đối số: số chỉ mục của vị trí mà phần tử mới sẽ được chèn vào và giá trị của phần tử mới.
import array as arr
#original array
numbers = arr.array('i',[10,20,30])
#add the integer 40 in the first position
#remember indexing starts at 0
numbers.insert(0,40)
print(numbers)
#output
#array('i', [40, 10, 20, 30])
Cách xóa một giá trị khỏi một mảng
Để loại bỏ một phần tử khỏi một mảng, sử dụng remove()
phương thức và bao gồm giá trị làm đối số cho phương thức.
import array as arr
#original array
numbers = arr.array('i',[10,20,30])
numbers.remove(10)
print(numbers)
#output
#array('i', [20, 30])
Với remove()
chỉ phiên bản đầu tiên của giá trị bạn chuyển làm đối số sẽ bị xóa.
Xem điều gì sẽ xảy ra khi có nhiều hơn một giá trị giống hệt nhau:
import array as arr
#original array
numbers = arr.array('i',[10,20,30,10,20])
numbers.remove(10)
print(numbers)
#output
#array('i', [20, 30, 10, 20])
Chỉ lần xuất hiện đầu tiên của 10
bị xóa.
Bạn cũng có thể sử dụng pop()
phương thức và chỉ định vị trí của phần tử sẽ bị xóa:
import array as arr
#original array
numbers = arr.array('i',[10,20,30,10,20])
#remove the first instance of 10
numbers.pop(0)
print(numbers)
#output
#array('i', [20, 30, 10, 20])
Phần kết luận
Và bạn đã có nó – bây giờ bạn đã biết những điều cơ bản về cách tạo mảng trong Python bằng cách sử dụng array module
. Hy vọng rằng bạn tìm thấy hướng dẫn này hữu ích.
Để tìm hiểu thêm về Python, hãy xem Chứng chỉ về Máy tính Khoa học với Python của freeCodeCamp.
Bạn sẽ bắt đầu từ những điều cơ bản và học theo cách tương tác và thân thiện với người mới bắt đầu. Cuối cùng, bạn cũng sẽ xây dựng năm dự án để đưa vào thực tế và giúp củng cố những gì bạn đã học.
Cảm ơn đã đọc và mã hóa hạnh phúc!
Tài liệu tham khảo: Tài liệu Python