Khi mới bắt đầu học lập trình, việc làm quen với mảng trong Python là một kỹ năng thiết yếu mà ai cũng cần phải học. Mặc dù Python không cung cấp mảng theo cách truyền thống như C/C++, nhưng bạn vẫn có thể làm việc với chúng qua các mô-đun hỗ trợ. Hãy cùng Mytour tìm hiểu sâu hơn về kiểu mảng trong Python qua bài viết dưới đây.
Định nghĩa về mảng trong Python
Mảng trong Python là một cấu trúc dữ liệu dạng dãy, được dùng để lưu trữ tập hợp các phần tử có cùng kiểu dữ liệu và được truy xuất thông qua một tên biến duy nhất. Khác với danh sách (list), nơi có thể chứa các phần tử có kiểu dữ liệu khác nhau, mảng giúp đảm bảo tính đồng nhất của kiểu dữ liệu, tối ưu hóa bộ nhớ và nâng cao hiệu suất xử lý.

Để làm việc với mảng trong Python, bạn cần sử dụng mô-đun array có sẵn trong thư viện chuẩn. Đây là sự lựa chọn tuyệt vời khi xử lý các tập dữ liệu lớn và cần tối ưu bộ nhớ. Dưới đây là ví dụ minh họa cách khởi tạo mảng trong Python:
a = arr.array('f', [1.2, 1.3, 2.3])
Để học Python hiệu quả và thực hiện các thao tác như tạo mảng, bạn cần một chiếc laptop mạnh mẽ. Dù bạn là người mới hay đã có kinh nghiệm, việc sở hữu một thiết bị phù hợp sẽ giúp việc lập trình trở nên mượt mà và hiệu quả hơn. Tham khảo các mẫu laptop học lập trình tại Mytour với giá ưu đãi và đa dạng lựa chọn.
Cú pháp và các kiểu dữ liệu của mảng trong Python
Sau khi đã nắm rõ khái niệm về mảng trong Python, bạn chắc hẳn sẽ muốn tìm hiểu về các cú pháp tạo mảng và các kiểu dữ liệu sử dụng. Tùy vào nhu cầu và mục đích sử dụng, bạn có thể chọn phương pháp khai báo mảng sao cho phù hợp với hiệu suất và yêu cầu xử lý. Dưới đây là một số cú pháp khai báo và thao tác thường gặp.
Cách khai báo mảng với thư viện array
Để khởi tạo mảng trong Python, bạn cần tuân thủ cú pháp chuẩn của mô-đun array. Cú pháp tạo mảng trong Python như sau:
a = array.array(typecode, [elements])

Cụ thể là:
- typecode: là mã đại diện cho kiểu dữ liệu của mảng.
- [elements]: là danh sách các giá trị mà bạn muốn đưa vào mảng.
Ví dụ về việc tạo mảng trong Python:
a = array.array('f', [1.2, 2.5, 3.8])
print(a)
Các kiểu dữ liệu có thể sử dụng trong mảng
Python là một ngôn ngữ lập trình linh hoạt, hỗ trợ nhiều kiểu dữ liệu khác nhau, giúp việc phát triển ứng dụng trở nên dễ dàng và hiệu quả hơn. Một số kiểu dữ liệu phổ biến khi làm việc với mảng bao gồm:

| Typecode | Kiểu dữ liệu | Chi tiết | Ví dụ |
| ‘b’ | signed char (1 byte) | Số nguyên nhỏ (Từ -128 đến 127) | array(‘b’, [1, -2]) |
| ‘B’ | unsigned char (1 byte) | Số nguyên dương (0 đến 255) | array(‘B’, [1, 2]) |
| ‘i’ | signed int (2/4 byte) | Số nguyên (Tùy thuộc vào hệ thống) | array(‘i’ , [10, -5]) |
| ‘I’ | unsigned int (2/4 byte) | Số nguyên dương lớn | array(‘I’ , [10, 20]) |
| ‘l' | signed long (4 byte) | Số nguyên dài | array(‘l’ , [1000]) |
| ‘L’ | unsigned long (4 byte) | Số nguyên dài không âm | array(‘L’ , [1000]) |
| ‘f’ | float (4 byte) | Số thực (Độ chính xác đơn) | array(‘f’ , [1.5, 3.14]) |
| ‘d’ | double (8 byte) | Số thực (Độ chính xác nhân đôi) | array(‘d’ , [1.5, 3.14]) |
Ngoài việc nắm vững các kiểu dữ liệu trong Python, bạn cũng cần chú ý một số yếu tố để quá trình tạo mảng trở nên chính xác và nhanh chóng hơn.
- Array trong Python không hỗ trợ các kiểu dữ liệu phức tạp như: Chuỗi (str), danh sách (list), từ điển (dict) hay số phức (complex).
- Nếu bạn cần lưu trữ các loại thông tin đa dạng khi tạo mảng trong Python, hãy xem xét sử dụng list hoặc numpy (numpy.array).
Các thao tác cơ bản với mảng trong Python
Khi làm việc với mảng trong Python, bạn sẽ thường xuyên phải thực hiện các thao tác cơ bản như thêm phần tử, truy cập theo chỉ số, xóa, đảo ngược, cắt lát mảng, hay nối mảng. Những thao tác này giúp bạn xử lý dữ liệu một cách hiệu quả và linh hoạt hơn khi làm việc với mảng.
Thêm phần tử vào mảng
Để thêm phần tử vào mảng trong Python, bạn có thể sử dụng hàm append(). Phương thức này rất tiện lợi khi bạn cần cập nhật mảng theo thời gian thực hoặc muốn tạo một mảng tự động tăng dần dựa trên các điều kiện nhất định. Nó đảm bảo rằng phần tử mới sẽ được chèn vào đúng vị trí mà không làm thay đổi cấu trúc mảng hiện tại.

Ví dụ minh họa:
import array
a = array.array('i', [1, 2, 3])
a.append(4)
print(a)
Kết quả: array('i', [1, 2, 3, 4])
Truy xuất phần tử trong mảng
Để lấy một phần tử cụ thể trong mảng, bạn sử dụng toán tử chỉ mục [ ]. Lưu ý rằng mảng trong Python bắt đầu từ chỉ mục 0, vì vậy trong một mảng gồm 5 phần tử, các chỉ mục hợp lệ sẽ từ 0 đến 4.
Ví dụ minh họa:
import array
numbers = arr.array('i', [1, 2, 3, 4, 5])
#Truy cập phần tử đầu tiên
print(numbers[0])
Kết quả: 1
#Truy cập phần tử thứ ba
print(numbers[2])
Kết quả: 3
Cắt mảng
Khi bạn cần lấy một chuỗi giá trị liên tiếp từ một mảng, việc sử dụng cú pháp cắt [start:end] sẽ rất hữu ích. Chỉ cần chèn dấu hai chấm ':' giữa dấu ngoặc vuông [ ], bạn có thể dễ dàng chỉ định phạm vi dữ liệu cần trích xuất.

Ví dụ:
import array
a = array.array('i', [2, 3, 4, 5, 6])
print(a[2:4])
Kết quả: array('i', [4, 5])
Xóa phần tử khỏi mảng
Để loại bỏ một phần tử trong mảng, phương thức remove() là công cụ hữu ích. Cần lưu ý rằng phương thức này yêu cầu bạn truyền vào chính giá trị của phần tử muốn xóa, thay vì chỉ số (index). Nếu bạn truyền vào chỉ mục thay vì giá trị, Python sẽ trả về lỗi.
Ví dụ:
import array
a = arr.array('i', [1.1, 2.1, 3.1])
a.remove(1.1)
print(a)
Kết quả: array('i', [2.1, 3.1])
Đảo ngược mảng
Trong Python, bạn có thể thay đổi thứ tự các phần tử trong mảng theo hướng ngược lại bằng nhiều phương pháp khác nhau. Một cách phổ biến là sử dụng phương thức reverse(). Lưu ý rằng khi bạn dùng reverse(), mảng sẽ được thay đổi ngay lập tức và các phần tử sẽ được sắp xếp lại theo thứ tự đảo ngược.

Ví dụ:
import array
arr = [1, 2, 3, 4, 5]
arr.reverse()
print(arr)
Kết quả: [5, 4, 3, 2, 1]
Lặp lại mảng
Khi đã tạo mảng trong Python, nếu bạn muốn lặp lại các phần tử bên trong, có một cách đơn giản để làm điều này. Bạn có thể sử dụng numpy.repeat() để thực hiện thao tác này. Hiểu rõ về kiểu mảng trong Python sẽ giúp bạn thao tác dễ dàng hơn.

Ví dụ:
import numpy as np
a = np.array([4, 5, 6])
repeat_array = np.repeat(a, 3)
print(repeat_array)
Kết quả: [4, 4, 4, 5, 5, 5, 6, 6, 6]
Duyệt mảng
Giống như trong nhiều ngôn ngữ lập trình khác, vòng lặp for là công cụ phổ biến để duyệt qua các phần tử trong mảng Python. Dưới đây là ví dụ minh họa việc sử dụng vòng lặp for, giúp bạn làm quen với cách sử dụng nó.
arr = [15, 25, 35, 45]
for val in arr:
print('value', val)
Kết quả: 15, 25, 35, 45
Ngoài ra, hàm range() cung cấp một phương pháp linh hoạt hơn để kiểm soát quá trình lặp trong vòng lặp for. Dưới đây là ví dụ về cách sử dụng nó.
arr = [15, 25, 35, 45, 55, 65]
for key in range(0, len(arr), 2):
print('num', key)
Nối mảng
Sau khi mảng được tạo trong Python, bạn có thể dễ dàng kết hợp chúng lại với nhau bằng phép nối. Để nối hai mảng lại với nhau, bạn chỉ cần sử dụng dấu '+' để thực hiện. Cách này rất hiệu quả khi bạn muốn mở rộng mảng mà không ảnh hưởng đến mảng gốc.

Ví dụ:
import array as arr
a=arr.array('d',[1.1 , 2.1 ,3.1, 2.9, 7.4])
b=arr.array('d',[, 8.1])
c=arr.array('d')
c=a+b
print("Array c = ",c)
Kết quả: c= array(‘d’, [1.1, 2.1, 3.1, 2.9, 7.4, , 8.1])
Sắp xếp mảng
Khi làm việc với các mảng chứa các đối tượng có cùng kiểu, chẳng hạn như toàn số hoặc toàn chuỗi, việc sắp xếp chúng trở nên rất cần thiết trong nhiều tình huống. Một phương pháp tiếp cận đơn giản nhất mà Python cung cấp để thực hiện việc này chính là sử dụng hàm sorted(). Hàm này sẽ trả về một danh sách mới đã được sắp xếp, trong khi mảng ban đầu vẫn được giữ nguyên.
Ví dụ:
score = [1, 5, 19, 21, 35, 77, 93, 100]
#Sắp xếp theo thứ tự tăng dần
a = sorted(score)
print(a)
#Sắp xếp theo thứ tự giảm dần
b = sorted(score, reverse=True)
print(b)
Kết quả: [1, 5, 19, 21, 35, 77, 93, 100] và [100, 93, 77, 35, 21, 19, 5, 1]
Tính tổng phần tử trong mảng
Sau khi hiểu rõ về kiểu mảng trong Python, chắc chắn nhiều bạn muốn biết cách tính tổng các phần tử trong mảng. Một phương pháp nhanh chóng và đơn giản là sử dụng hàm sum() có sẵn trong Python. Cùng xem ví dụ dưới đây:
#Hàm sum()
score = [1, 2, 5, 8, 10]
Kết quả: 26
Ngoài cách sử dụng hàm sum(), bạn cũng có thể áp dụng vòng lặp for để duyệt qua từng giá trị trong mảng và cộng dồn vào một biến tổng. Cách này giúp bạn hiểu rõ hơn về thao tác lặp trong Python. Dưới đây là ví dụ minh họa cụ thể:
score = [1, 21, 100, 6, 7.4, 8, 9]
sum = 0
for i in score
sum += i
print(sum)
Kết quả: 152.4
Một số phương thức mảng trong Python
Python cung cấp một số phương thức hữu ích giúp thao tác với mảng trở nên dễ dàng và hiệu quả hơn. Nắm vững những phương thức này sẽ giúp bạn xử lý dữ liệu nhanh chóng trong lập trình. Dưới đây là một số phương thức mảng phổ biến trong Python:

| Phương thức | Ý nghĩa |
| append(x) | Thêm phần tử x vào cuối mảng. |
| insert(i, x) | Chèn phần tử x vào vị trí i. |
| remove(x) | Xóa phần tử đầu tiên có giá trị x. |
| pop([i]) | Xóa và trả về phần tử tại vị trí i |
| index(x) | Trả về chỉ số của phần tử đầu tiên có giá trị x. |
| reverse() | Đảo ngược các phần tử trong mảng. |
| buffer_info() | Trả về tuple gồm địa chỉ bộ nhớ và số phần tử. |
| count(x) | Đếm số lần xuất hiện của x trong mảng. |
| extend(iterable) | Mở rộng một mảng bằng cách thêm tất cả các phần tử từ một đối tượng lặp khác vào. |
Khi nào nên sử dụng mảng thay vì danh sách?
Mặc dù danh sách (list) trong Python là một cấu trúc dữ liệu rất linh hoạt và thông dụng, nhưng mảng lại tỏ ra có ưu thế rõ rệt trong một số tình huống cụ thể. Nếu bạn cần làm việc với một tập hợp dữ liệu lớn và đồng nhất về kiểu (đặc biệt là các số), mảng sẽ tiết kiệm bộ nhớ và xử lý hiệu quả hơn so với list. Dưới đây là các trường hợp nên dùng mảng:

- Việc tối ưu hiệu suất là yếu tố quan trọng khi làm việc với dữ liệu đồng nhất.
- Áp dụng khi lượng dữ liệu số học cần xử lý rất lớn.
- Quản lý bộ nhớ hiệu quả là một yêu cầu quan trọng.
- Khi hiệu suất tính toán trong vòng lặp hoặc các thuật toán có tác động lớn đến kết quả.
Lỗi thường gặp khi làm việc với mảng trong Python
Khi lập trình với mảng trong Python, đặc biệt đối với người mới, có thể gặp phải một số lỗi phổ biến gây ra sự cố trong việc thực thi chương trình. Một số lỗi thường gặp như sau:

- Kiểu dữ liệu không khớp: Khi khởi tạo mảng, nếu sử dụng typecode không phù hợp với kiểu dữ liệu thực tế, Python sẽ báo lỗi TypeError.
- Thêm phần tử không đúng kiểu dữ liệu: Sau khi mảng được tạo với kiểu dữ liệu xác định, nếu bạn cố gắng chèn giá trị không đúng kiểu (ví dụ: chèn float vào mảng int), sẽ xảy ra lỗi TypeError.
- Truy xuất chỉ số ngoài phạm vi: Nếu bạn cố gắng truy cập chỉ số vượt quá giới hạn mảng, Python sẽ báo lỗi IndexError.
- Gọi remove() với giá trị không có trong mảng: Nếu gọi phương thức remove() với giá trị không tồn tại trong mảng, chương trình sẽ gây ra lỗi ValueError.
Thông qua bài viết này, bạn đã nắm bắt được cách tạo và làm việc với mảng trong Python, cũng như những thao tác phổ biến giúp xử lý dữ liệu một cách nhanh chóng và hiệu quả. Nếu bạn vẫn chưa rõ về mảng trong Python, bây giờ bạn đã có thể hiểu rõ bản chất và ứng dụng của nó. Đừng quên theo dõi Mytour thường xuyên để cập nhật thêm nhiều kiến thức giúp nâng cao kỹ năng lập trình của mình nhé!
