Sắp xếp mảng là một thao tác quan trọng trong lập trình, giúp tổ chức dữ liệu theo một thứ tự nhất định, từ đó tối ưu hóa hiệu suất tìm kiếm, truy xuất và xử lý thông tin. Trong bài viết này, mình sẽ hướng dẫn bạn cách làm việc với mảng trong Python, từ cách sử dụng lớp array
, các phương thức thao tác với phần tử, cho đến cách chuyển đổi dữ liệu trong mảng.
Điểm chính cần nắm
- Array methods – Các phương thức của mảng: Giới thiệu các phương thức quan trọng giúp thao tác với mảng trong Python.
- Class array – Lớp mảng trong Python là gì?: Định nghĩa về lớp
array
, cách sử dụng và đặc điểm chính. - Các nhóm phương thức chính trong array: Phân loại các nhóm phương thức quan trọng để làm việc với mảng.
- Thêm/Xóa phần tử trong Python: Các phương thức để thêm và xóa phần tử trong mảng.
- Thêm phần tử vào mảng: Hướng dẫn sử dụng
append()
,extend()
,insert()
. - Xóa phần tử khỏi mảng: Hướng dẫn sử dụng
pop()
,remove()
.
- Thêm phần tử vào mảng: Hướng dẫn sử dụng
- Lấy thông tin về mảng: Các phương thức lấy thông tin như
buffer_info()
,count()
,index()
. - Thao tác với phần tử mảng: Các phương thức giúp đảo ngược thứ tự hoặc thay đổi dữ liệu trong mảng.
- Chuyển đổi dữ liệu trong mảng: Hướng dẫn chuyển đổi giữa mảng với các loại dữ liệu khác.
- Chuyển đổi giữa mảng và danh sách: Sử dụng
tolist()
,fromlist()
. - Chuyển đổi giữa mảng và bytes: Sử dụng
tobytes()
,frombytes()
. - Chuyển đổi giữa mảng và file: Sử dụng
tofile()
,fromfile()
. - Chuyển đổi giữa mảng và chuỗi Unicode: Sử dụng
tounicode()
,fromunicode()
.
- Chuyển đổi giữa mảng và danh sách: Sử dụng
- Thêm/Xóa phần tử trong Python: Các phương thức để thêm và xóa phần tử trong mảng.
- Vietnix – Dẫn đầu về tốc độ, bảo mật và chất lượng dịch vụ: Vietnix cung cấp dịch vụ máy chủ, hosting, VPS với hiệu suất cao, bảo mật tối ưu.
Array methods – Các phương thức của mảng
Module array
trong Python cung cấp một kiểu dữ liệu giúp lưu trữ các giá trị cơ bản như ký tự, số nguyên và số thực. Mảng trong Python có nhiều điểm tương đồng với danh sách (list
), nhưng có một điểm khác biệt quan trọng: tất cả phần tử trong mảng phải có cùng kiểu dữ liệu (đồng nhất – homogeneous) và được lưu trữ theo thứ tự.

Khi tạo mảng, kiểu dữ liệu của nó được xác định bằng một mã kiểu (typecode) – một ký tự đơn biểu thị loại dữ liệu. Một số mã kiểu dữ liệu phổ biến gồm:
'i'
– Số nguyên (integer)'f'
– Số thực (float)'u'
– Ký tự Unicode (Unicode character)
Các phương thức của mảng hỗ trợ nhiều thao tác như thêm, mở rộng và xử lý phần tử. Những phương thức này giúp quản lý dữ liệu hiệu quả, đặc biệt hữu ích cho tính toán số học và lưu trữ dữ liệu gọn nhẹ.
Class array
– Lớp mảng trong Python là gì?
Lớp array
trong Python cung cấp nhiều phương thức để thao tác với mảng, bao gồm thêm, xóa phần tử, lấy thông tin, chỉnh sửa dữ liệu và chuyển đổi mảng sang các kiểu dữ liệu khác. Dưới đây là các phương thức được phân loại theo chức năng.
Mảng được tạo bằng lớp array.array(typecode[, initializer])
, trong đó:
typecode
là một ký tự đơn xác định kiểu dữ liệu của mảng.initializer
(tùy chọn) là một danh sách hoặc một dãy số để khởi tạo mảng.
Các nhóm phương thức của mảng trong Python
- Thêm/Xóa phần tử:
append()
,extend()
,insert()
,pop()
,remove()
. - Lấy thông tin về mảng:
buffer_info()
,count()
,index()
. - Thao tác với phần tử:
reverse()
,byteswap()
. - Chuyển đổi dữ liệu:
frombytes()
,tobytes()
,fromfile()
,tofile()
,fromlist()
,tolist()
,fromunicode()
,tounicode()
.
Thêm/Xóa phần tử trong Python
Dưới đây là các phương thức dùng để thêm (append, extend, insert) và xóa (pop, remove) phần tử trong mảng:
STT | Phương thức | Mô tả |
---|---|---|
1 | append(x) | Thêm phần tử x vào cuối mảng. |
2 | extend(iterable) | Thêm tất cả phần tử từ một danh sách hoặc iterable vào cuối mảng. |
3 | insert(i, x) | Chèn phần tử x vào vị trí i trong mảng. |
4 | pop([i]) | Xóa và trả về phần tử tại vị trí i . Nếu không có i , xóa phần tử cuối cùng. |
5 | remove(x) | Xóa lần xuất hiện đầu tiên của phần tử x trong mảng. |
Thêm phần tử vào mảng
append(x)
– Thêm phần tử vào cuối mảng
import array
arr = array.array('i', [1, 2, 3])
arr.append(4) # Thêm số 4 vào cuối mảng
print(arr) # Output: array('i', [1, 2, 3, 4])
extend(iterable)
– Thêm nhiều phần tử từ một danh sách hoặc iterable
arr.extend([5, 6, 7])
print(arr) # Output: array('i', [1, 2, 3, 4, 5, 6, 7])
insert(i, x)
– Chèn phần tử vào vị trí chỉ định
arr.insert(2, 99) # Chèn 99 vào vị trí thứ 2 (index 2)
print(arr) # Output: array('i', [1, 2, 99, 3, 4, 5, 6, 7])
Xóa phần tử khỏi mảng
pop([i])
– Xóa phần tử tại vị tríi
hoặc phần tử cuối cùng
Lưu ý
- Nếu không truyền
i
, phương thức sẽ xóa và trả về phần tử cuối cùng. - Nếu có
i
, phương thức sẽ xóa và trả về phần tử tại vị tríi
.
arr.pop() # Xóa phần tử cuối cùng
print(arr) # Output: array('i', [1, 2, 99, 3, 4, 5, 6])
arr.pop(2) # Xóa phần tử tại index 2 (99)
print(arr) # Output: array('i', [1, 2, 3, 4, 5, 6])
remove(x)
– Xóa phần tử đầu tiên có giá trịx
Lưu ý
Nếu mảng có nhiều phần tử giống nhau, chỉ phần tử đầu tiên được xóa.
arr.remove(3) # Xóa số 3 đầu tiên trong mảng
print(arr) # Output: array('i', [1, 2, 4, 5, 6])
Mọi người cũng xem:
Lấy thông tin về mảng
Python cung cấp các phương thức để lấy thông tin về mảng, bao gồm địa chỉ bộ nhớ, số lượng phần tử, vị trí của phần tử trong mảng,…
STT | Phương thức | Mô tả |
---|---|---|
1 | buffer_info() | Trả về địa chỉ bộ nhớ và số phần tử của mảng dưới dạng một tuple (address, length) . |
2 | count(x) | Trả về số lần xuất hiện của phần tử x trong mảng. |
3 | index(x[, start[, stop]]) | Tìm chỉ mục nhỏ nhất của phần tử x trong mảng. Có thể giới hạn phạm vi tìm kiếm bằng start và stop . |
Ví dụ:
import array
arr = array.array('i', [1, 2, 3, 2, 4, 2])
# buffer_info()
# Lấy thông tin bộ nhớ của mảng
print(arr.buffer_info())
# count(x)
# Đếm số lần xuất hiện của số 2 trong mảng
print(arr.count(2))
# index(x[, start[, stop]])
# Tìm chỉ mục đầu tiên của số 3 trong mảng
print(arr.index(3))
Kết quả:
(140123456789456, 6) # Địa chỉ bộ nhớ và số phần tử trong mảng
3 # Số lần số 2 xuất hiện trong mảng
2 # Chỉ mục đầu tiên của số 3
Thao tác với phần tử mảng
Python cung cấp một số phương thức giúp thao tác trực tiếp với các phần tử trong mảng, bao gồm đảo ngược thứ tự phần tử và hoán đổi byte của dữ liệu.
STT | Phương thức | Mô tả |
---|---|---|
1 | reverse() | Đảo ngược thứ tự các phần tử trong mảng. |
2 | byteswap() | Hoán đổi byte của tất cả phần tử trong mảng, hữu ích khi đọc dữ liệu từ hệ thống có thứ tự byte khác. |
Ví dụ:
import array
# Tạo mảng số nguyên
arr = array.array('i', [1, 2, 3, 4, 5])
# Đảo ngược mảng
arr.reverse()
print("Mảng sau khi đảo ngược:", arr.tolist())
# Hoán đổi byte của phần tử trong mảng
arr.byteswap()
print("Mảng sau khi hoán đổi byte:", arr.tolist())
Kết quả:
Mảng sau khi đảo ngược: [5, 4, 3, 2, 1]
Mảng sau khi hoán đổi byte: [83886080, 67108864, 50331648, 33554432, 16777216]
Lưu ý
Chuyển đổi dữ liệu trong mảng
Python cung cấp nhiều phương thức để chuyển đổi dữ liệu trong mảng, bao gồm chuyển đổi giữa mảng và danh sách, mảng và bytes, mảng và file, cũng như mảng và chuỗi Unicode (chỉ áp dụng cho kiểu 'u'
).
STT | Phương thức | Mô tả |
---|---|---|
1 | frombytes(buffer) | Thêm dữ liệu từ một đối tượng bytes vào mảng. |
2 | tobytes() | Chuyển đổi mảng thành đối tượng bytes. |
3 | fromfile(f, n) | Đọc n phần tử từ file và thêm vào mảng. |
4 | tofile(f) | Ghi toàn bộ phần tử của mảng vào file. |
5 | fromlist(list) | Chuyển đổi danh sách thành mảng. |
6 | tolist() | Chuyển đổi mảng thành danh sách. |
7 | fromunicode(s) | Thêm dữ liệu từ chuỗi Unicode vào mảng (chỉ dùng với kiểu 'u' ). |
8 | tounicode() | Chuyển đổi mảng thành chuỗi Unicode (chỉ dùng với kiểu 'u' ). |
Chuyển đổi giữa mảng và danh sách
Ví dụ:
import array
# Tạo mảng số nguyên
arr = array.array('i', [10, 20, 30, 40, 50])
# Chuyển đổi mảng thành danh sách
lst = arr.tolist()
print("Danh sách sau khi chuyển đổi:", lst)
# Chuyển đổi danh sách thành mảng
new_arr = array.array('i')
new_arr.fromlist(lst)
print("Mảng sau khi chuyển từ danh sách:", new_arr.tolist())
Kết quả:
Danh sách sau khi chuyển đổi: [10, 20, 30, 40, 50]
Mảng sau khi chuyển từ danh sách: [10, 20, 30, 40, 50]
Chuyển đổi giữa mảng và bytes
Ví dụ:
# Chuyển đổi mảng thành bytes
byte_data = arr.tobytes()
print("Dữ liệu bytes:", byte_data)
# Tạo mảng mới từ dữ liệu bytes
new_arr2 = array.array('i')
new_arr2.frombytes(byte_data)
print("Mảng sau khi chuyển từ bytes:", new_arr2.tolist())
Kết quả:
Dữ liệu bytes: b’\n\x00\x00\x00\x14\x00\x00\x00\x1e\x00\x00\x00(\x00\x00\x002\x00\x00\x00′
Mảng sau khi chuyển từ bytes: [10, 20, 30, 40, 50]
Giải thích:
- Mảng được chuyển thành chuỗi bytes bằng
tobytes()
. frombytes()
giúp khôi phục lại mảng từ chuỗi bytes này.
Chuyển đổi giữa mảng và file
Ví dụ:
# Ghi mảng vào file
with open("array_data.bin", "wb") as f:
arr.tofile(f)
# Đọc mảng từ file
new_arr3 = array.array('i')
with open("array_data.bin", "rb") as f:
new_arr3.fromfile(f, len(arr))
print("Mảng sau khi đọc từ file:", new_arr3.tolist())
Kết quả:
Mảng sau khi đọc từ file: [10, 20, 30, 40, 50]
Giải thích:
tofile(f)
: Ghi toàn bộ phần tử của mảng vào file nhị phân.fromfile(f, n)
: Đọcn
phần tử từ file và thêm vào mảng.
Chuyển đổi giữa mảng và chuỗi Unicode
Ví dụ:
# Tạo mảng Unicode
arr_unicode = array.array('u', 'Hello')
# Chuyển đổi mảng thành chuỗi Unicode
unicode_str = arr_unicode.tounicode()
print("Chuỗi Unicode sau khi chuyển:", unicode_str)
# Tạo mảng mới từ chuỗi Unicode
new_arr_unicode = array.array('u')
new_arr_unicode.fromunicode(unicode_str)
print("Mảng sau khi chuyển từ Unicode:", new_arr_unicode.tolist())
Kết quả:
Chuỗi Unicode sau khi chuyển: Hello
Mảng sau khi chuyển từ Unicode: [‘H’, ‘e’, ‘l’, ‘l’, ‘o’]
Vietnix – Dẫn đầu về tốc độ, bảo mật và chất lượng dịch vụ
Vietnix tự hào là nhà cung cấp dịch vụ thuê máy chủ (server), hosting, VPS, domain hàng đầu tại Việt Nam, mang đến giải pháp lưu trữ ổn định, bảo mật cao và tối ưu chi phí cho doanh nghiệp. Với hơn 12 năm kinh nghiệm, Vietnix không ngừng cải tiến dịch vụ, đảm bảo hiệu suất vượt trội và đội ngũ kỹ thuật hỗ trợ 24/7. Hơn 80.000 khách hàng đã tin tưởng lựa chọn Vietnix để nâng tầm hệ thống và bảo vệ dữ liệu quan trọng.
Thông tin liên hệ:
- Website: https://vietnix.vn/
- Hotline: 18001093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, TP.HCM
Lời kết
Qua bài viết, bạn đã hiểu được cách làm việc với mảng trong Python, từ việc thêm, xóa, thao tác với phần tử cho đến chuyển đổi dữ liệu. Việc sắp xếp và quản lý mảng hiệu quả không chỉ giúp mã nguồn gọn gàng hơn mà còn nâng cao hiệu suất chương trình. Nếu bạn có bất cứ thắc mắc hay cần hỗ trợ gì, hãy để lại bình luận bên dưới, mình sẽ hỗ trợ nhanh nhất. Cảm ơn bạn đã đọc!
Mọi người cũng xem: