Posted in

Tổng hợp các hàm xử lý Array với Python

Summary of Array function
Summary of Array function

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ăngVí dụ sử dụngKết quả
append(x)Thêm phần tử x vào cuối arrayarr.append(5)[1, 2, 3, 5]
insert(i, x)Chèn phần tử x tại vị trí iarr.insert(1, 99)[1, 99, 2, 3]
extend(iterable)Thêm nhiều phần tử từ iterablearr.extend([7,8])[1, 2, 3, 7, 8]
remove(x)Xóa phần tử đầu tiên có giá trị xarr.remove(2)[1, 3, 7, 8]
pop([i])Xóa phần tử tại chỉ số i, mặc định là cuốiarr.pop()[1, 3, 7]
clear()Xóa toàn bộ phần tử trong arrayarr.clear()[]
index(x)Trả về chỉ số đầu tiên của giá trị xarr.index(7)2
count(x)Đếm số lần xuất hiện của giá trị xarr.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ớiarr2 = arr.copy()arr2 == arrTrue
tolist()Chuyển array thành list Pythonarr.tolist()[1, 2, 3]
del arr[i]Xóa phần tử tại chỉ số idel arr[0][2, 3]
arr[i] = xThay đổi giá trị tại chỉ số iarr[1] = 99[2, 99, 3]
arr[i:j] (slicing)Trích một phần array từ i đến j-1arr[0:2][2, 99]
x in arrKiểm tra xem phần tử có trong array hay không99 in arrTrue

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

  1. Python Documentation – Array: https://docs.python.org/3/library/array.html
  2. W3Schools – Python Arrays: https://www.w3schools.com/python/python_arrays.asp
  3. Real Python – Arrays in Python: https://realpython.com/python-arrays/

Leave a Reply

Your email address will not be published. Required fields are marked *