Trong quá trình học và làm việc với Python, chắc hẳn nhiều bạn thường xuyên sử dụng list để lưu trữ dữ liệu. Tuy nhiên, Python còn cung cấp thêm một cấu trúc dữ liệu khác là array thông qua module array
. Array có những ưu điểm nhất định, đặc biệt khi chúng ta cần làm việc với một tập hợp dữ liệu đồng nhất (tất cả phần tử đều cùng kiểu).
Việc nắm vững các hàm xử lý array trong Python giúp mình thao tác dễ dàng hơn với dữ liệu: thêm, xóa, sửa, tìm kiếm, duyệt qua, hay sắp xếp. Đây là những kỹ năng nền tảng nhưng vô cùng quan trọng nếu muốn lập trình hiệu quả và viết code sạch sẽ.
Trong bài viết này, mình sẽ tổng hợp lại các nhóm hàm xử lý array thông dụng, đi kèm ví dụ minh họa và giải thích cụ thể. Cuối cùng, mình cũng sẽ so sánh array mặc định của Python với NumPy array để các bạn thấy sự khác biệt.
Bảng tổng hợp các phương thức Array trong Python
Phương thức / Toán tử | Chức năng | Ví dụ sử dụng | Kết quả |
---|---|---|---|
append(x) | Thêm phần tử x vào cuối array | arr.append(5) | [1, 2, 3, 5] |
insert(i, x) | Chèn phần tử x tại vị trí i | arr.insert(1, 99) | [1, 99, 2, 3] |
extend(iterable) | Thêm nhiều phần tử từ iterable | arr.extend([7,8]) | [1, 2, 3, 7, 8] |
remove(x) | Xóa phần tử đầu tiên có giá trị x | arr.remove(2) | [1, 3, 7, 8] |
pop([i]) | Xóa phần tử tại chỉ số i , mặc định là cuối | arr.pop() | [1, 3, 7] |
clear() | Xóa toàn bộ phần tử trong array | arr.clear() | [] |
index(x) | Trả về chỉ số đầu tiên của giá trị x | arr.index(7) | 2 |
count(x) | Đếm số lần xuất hiện của giá trị x | arr.count(7) | 1 |
reverse() | Đảo ngược array tại chỗ | arr.reverse() | [8, 7, 3, 1] |
copy() | Tạo một bản sao array mới | arr2 = arr.copy() | arr2 == arr → True |
tolist() | Chuyển array thành list Python | arr.tolist() | [1, 2, 3] |
del arr[i] | Xóa phần tử tại chỉ số i | del arr[0] | [2, 3] |
arr[i] = x | Thay đổi giá trị tại chỉ số i | arr[1] = 99 | [2, 99, 3] |
arr[i:j] (slicing) | Trích một phần array từ i đến j-1 | arr[0:2] | [2, 99] |
x in arr | Kiểm tra xem phần tử có trong array hay không | 99 in arr | True |
1. Tạo Array trong Python
Để làm việc với array, mình cần import module array
.
import array
# Create an integer array
arr = array.array("i", [1, 2, 3, 4, 5])
print(arr) # Output: array('i', [1, 2, 3, 4, 5])
- Ở đây
"i"
là type code, nghĩa là kiểu dữ liệu của phần tử (integer 4 bytes). - Điểm khác biệt so với list là array chỉ lưu trữ cùng một kiểu dữ liệu, trong khi list có thể lưu trữ nhiều kiểu khác nhau.
Ví dụ nếu mình cố gắng thêm một phần tử dạng string vào array trên, Python sẽ báo lỗi ngay.
2. Thêm phần tử vào Array
Có nhiều cách thêm phần tử:
2.1 Dùng append()
Thêm phần tử vào cuối array.
arr.append(6)<br>print(arr) # array('i', [1, 2, 3, 4, 5, 6])<br>
2.2 Dùng insert()
Chèn phần tử tại một vị trí cụ thể.
arr.insert(2, 99)
print(arr) # array('i', [1, 2, 99, 3, 4, 5, 6])
2.3 Dùng extend()
Thêm nhiều phần tử cùng lúc từ một iterable khác.
arr.extend([7, 8, 9])
print(arr) # array('i', [1, 2, 99, 3, 4, 5, 6, 7, 8, 9])
Điều quan trọng là mọi phần tử thêm vào phải cùng kiểu dữ liệu với array.
3. Xóa phần tử trong Array
3.1 Dùng remove()
Xóa phần tử theo giá trị (nếu có nhiều phần tử trùng thì chỉ xóa phần tử đầu tiên).
arr.remove(99)
print(arr) # array('i', [1, 2, 3, 4, 5, 6, 7, 8, 9])
3.2 Dùng pop()
Xóa phần tử theo chỉ số, mặc định là phần tử cuối.
arr.pop()
print(arr) # array('i', [1, 2, 3, 4, 5, 6, 7, 8])
3.3 Dùng del
Có thể xóa theo chỉ số hoặc cắt nhiều phần tử cùng lúc.
del arr[0]
print(arr) # array('i', [2, 3, 4, 5, 6, 7, 8])
3.4 Dùng clear()
Xóa toàn bộ phần tử trong array.
arr.clear()
print(arr) # array('i')
4. Sửa giá trị phần tử trong Array
Chúng ta có thể truy cập phần tử qua chỉ số và gán giá trị mới.
arr = array.array("i", [10, 20, 30, 40, 50])
arr[2] = 99
print(arr) # array('i', [10, 20, 99, 40, 50])
Ngoài ra, có thể cập nhật nhiều phần tử cùng lúc bằng slicing:
arr[1:3] = array.array("i", [111, 222])
print(arr) # array('i', [10, 111, 222, 40, 50])
5. Tìm kiếm trong Array
5.1 Dùng index()
Trả về vị trí đầu tiên tìm thấy phần tử.
print(arr.index(40)) # Output: 3
5.2 Dùng vòng lặp for
Hữu ích khi cần tìm nhiều giá trị.
for i, value in enumerate(arr):
if value == 222:
print("Found at index:", i)
5.3 Dùng toán tử in
Đơn giản để kiểm tra sự tồn tại.
print(111 in arr) # True
6. Duyệt Array
6.1 Dùng vòng lặp for
for value in arr:
print(value)
6.2 Dùng while
i = 0
while i < len(arr):
print(arr[i])
i += 1
6.3 Dùng enumerate()
Lấy cả chỉ số và giá trị.
for i, value in enumerate(arr):
print("Index:", i, "Value:", value)
7. Sắp xếp và đảo ngược Array
Array của Python không có sẵn sort()
, nhưng mình có thể chuyển sang list rồi sắp xếp.
arr_list = arr.tolist()
arr_list.sort()
print(arr_list) # [10, 40, 50, 111, 222]
7.1 Dùng reverse()
Đảo ngược array.
arr.reverse()
print(arr) # array('i', [50, 40, 222, 111, 10])
7.2 Dùng sorted()
Trả về list đã sắp xếp, không làm thay đổi array gốc.
print(sorted(arr)) # [10, 40, 50, 111, 222]
8. Các thao tác nâng cao khác
8.1 Cắt array (slicing)
print(arr[1:4]) # array('i', [40, 222, 111])
8.2 Đếm số lần xuất hiện với count()
arr2 = array.array("i", [1, 2, 2, 3, 2, 4])
print(arr2.count(2)) # Output: 3
8.3 Sao chép array với copy()
arr_copy = arr2.copy()
print(arr_copy) # array('i', [1, 2, 2, 3, 2, 4])
8.4 So sánh array
print(arr2 == arr_copy) # True
9. Kết luận
Qua bài viết này, mình đã tổng hợp lại các hàm xử lý array trong Python bao gồm:
- Tạo, thêm, xóa, sửa giá trị phần tử.
- Tìm kiếm, duyệt qua array.
- Sắp xếp, đảo ngược và các thao tác nâng cao như slicing, count, copy.
- So sánh array mặc định với NumPy array.
Việc luyện tập với các ví dụ trên sẽ giúp mình ghi nhớ nhanh hơn và sử dụng array linh hoạt trong các dự án thực tế. Với dữ liệu nhỏ, array chuẩn của Python là đủ. Nhưng nếu cần tối ưu cho dữ liệu lớn, NumPy sẽ là lựa chọn tốt hơn.
10. Tài liệu tham khảo
- Python Documentation – Array: https://docs.python.org/3/library/array.html
- W3Schools – Python Arrays: https://www.w3schools.com/python/python_arrays.asp
- Real Python – Arrays in Python: https://realpython.com/python-arrays/