Mảng là một phần cơ bản của tất cả các ngôn ngữ lập trình, nó là tập hợp các phần tử của một kiểu dữ liệu duy nhất, ví dụ mảng số nguyên, mảng chuỗi. Không giống như mảng, mỗi list có thể lưu trữ phần tử với bất kỳ kiểu dữ liệu nào và làm được mọi thứ mà mảng có thể làm. Chúng ta có thể lưu trữ số nguyên, số thập phân, chuỗi trong cùng một list. Vì thế, làm việc với list khá linh hoạt. Tuy nhiên, trong Python, không có cấu trúc dữ liệu mảng gốc. Vì vậy, chúng ta sử dụng các list Python thay cho mảng.
Một mảng các giá trị số được hỗ trợ trong Python bởi mô-đun array.
[external_link_head]
Ghi chú: Nếu bạn muốn tạo mảng thực sự trong Python, bạn cần phải sử dụng cấu trúc dữ liệu mảng của NumPy. Để giải quyết các vấn đề toán học thì mảng NumPy sẽ hiệu quả hơn.
Mục lục
Bạn có thể thao tác với list giống như mảng nhưng không thể ép kiểu phần tử được lưu trữ trong list. Ví dụ:
a= [1, 3.5, "Hello"]
Nếu bạn tạo mảng sử dụng mô-đun array, tất cả các phần tử của mảng phải có cùng kiểu số.
import array as arr a = arr.array('d', [1, 3.5, "Hello"]) // Chạy code này sẽ báo lỗi
Từ những ví dụ trên bạn có thể đoán được, chúng ta cần nhập mô-đun array để tạo các mảng. Ví dụ:
[external_link offset=1]
import array as arr a = arr.array('d',[1.1, 3.5, 4.5]) print(a)
Code trên tạo mảng có kiểu float. Chữ ‘d’ là mã kiểu, quyết định kiểu của mảng trong quá trình tạo. Dưới đây là những mã kiểu thường dùng:
Mã kiểu | C Type | Python Type | Kích thước tối thiểu tính theo byte |
---|---|---|---|
'b' | signed char | int | 1 |
'B' | unsigned char | int | 1 |
'u' | Py_UNICODE | Unicode character | 2 |
'h' | signed short | int | 2 |
'H' | unsigned short | int | 2 |
'i' | signed int | int | 2 |
'I' | unsigned int | int | 2 |
'l' | signed long | int | 4 |
'L' | unsigned long | int | 4 |
'f' | float | float | 4 |
'd' | double | float | 8 |
Ta sẽ không thảo luận về các kiểu dữ liệu C khác nhau trong bài này. Ta sẽ dùng mã ‘i’ cho số nguyên và ‘d’ cho số thập phân trong toàn bài.
Ghi chú: Mã code ‘u’ cho các ký tự Unicode không còn được chấp nhận từ phiên bản Python 3.3. Tránh sự dụng nó khi có thể.
Chúng ta sử dụng index để truy cập đến các phần tử của mảng. Index cũng bắt đầu từ 0, tương tự như trong list Python.
import array as arr a = arr.array('i', [2, 4, 6, 8]) print("Phần tử đầu tiên:", a[0]) print("Phần tử thứ 2:", a[1]) print("Phần tử cuối cùng:", a[-1])
Chạy chương trình trên ta được:
Phần tử đầu tiên: 2
Phần tử thứ 2: 4
Phần tử cuối cùng: 8
Bạn có thể truy cập vào một dải phần tử trong mảng, sử dụng toán tử cắt lát :.
import array as arr numbers_list = [5, 85, 65, 15, 95, 52, 36, 25] numbers_array = arr.array('i', numbers_list) print(numbers_array[2:5]) # Phần tử thứ 3 đến 5 print(numbers_array[:-5]) # Phần tử đầu tiên đến 4 print(numbers_array[5:]) # Phần tử thứ 6 đến hết print(numbers_array[:]) # Phần tử đầu tiên đến cuối cùng
Khi bạn chạy code trên sẽ nhận được output là:
array('i', [65, 15, 95]) array('i', [5, 85, 65]) array('i', [52, 36, 25]) array('i', [5, 85, 65, 15, 95, 52, 36, 25])
Mảng có thể thay đổi, các phần tử của nó có thể thay đổi theo cách tương tự như list.
import array as arr numbers = arr.array('i', [1, 1, 2, 5, 7, 9]) # thay đổi phần tử đầu tiên numbers[0] = 0 print(numbers) # Output: array('i', [0, 1, 2, 5, 7, 9]) # thay phần tử thứ 3 đến thứ 5 numbers[2:5] = arr.array('i', [4, 6, 8]) print(numbers) # Output: array('i', [0, 1, 4, 6, 8, 9])
Bạn có thêm một mục vào list sử dụng append() hoặc thêm vài mục sử dụng extend():
[external_link offset=2]
import array as arr numbers = arr.array('i', [3, 5, 7]) numbers.append(4) print(numbers) # Output: array('i', [3, 5, 7, 4]) # extend() nối vào cuối mảng numbers.extend([5, 6, 7]) print(numbers) # Output: array('i', [3, 5, 7, 4, 5, 6, 7])
2 mảng cũng có thể nối lại thành một nhờ toán tử +:
import array as arr mang_le = arr.array('i', [3, 5, 7]) mang_chan = arr.array('i', [2, 6, 8]) numbers = arr.array('i') # tạo mảng trống numbers = mang_le + mang_chan # Code by quantrimang.com print(numbers) # Output: array('i', [3, 5, 7, 2, 6, 8])
Để xóa một hoặc nhiều phần tử của mảng ta sử dụng lệnh del.
import array as arr number = arr.array('i', [1, 3, 3, 5, 7]) del number[2] # xóa phần tử thứ 3 print(number) # Output: array('i', [1, 3, 5, 7]) del number # xóa toàn bộ mảng print(number) # Error: array 'number' is not defined
Có thể sử dụng remove() để xóa mục đã cho hoặc pop() để xóa mục với index cho trước:
import array as arr numbers = arr.array('i', [1, 1, 3, 5, 9]) numbers.remove(1) print(numbers) # Output: array('i', [1, 3, 5, 9]) print(numbers.pop(2)) # Output: 12 print(numbers) # Output: array('i', [1, 3, 9])
Bạn có thể tìm hiểu thêm về các phương thức của mảng Python tại đây.
List linh hoạt hơn mảng, chúng có thể lưu trữ phần tử với nhiều kiểu dữ liệu khác nhau, bao gồm cả chuỗi. List cũng nhanh hơn mảng, vậy thì tại sao lại cần dùng mảng? Nếu bạn phải thực hiện những phép tính toán toán học trên mảng và ma trận, bạn nên sử dụng thư viện NumPy. Trừ khi thực sự cần đến mảng (mô-đun mảng có thể cần để giao tiếp với các code C), nếu không đừng sử dụng chúng.
Bài trước: Pakage trong Python[external_footer]
Bảng xếp hạng Anime được xem nhiều nhất tuần của mùa hè. Bảng xếp hạng…
Theo thông báo của biên tập viên của manga là Shiraki trên Twitter Manga The…
Vừa qua, dàn nhân lực chính thức cho bộ anime điện ảnh Tensei Shitara Slime…
Anime One Punch Man đã xác nhận ra phần 3, với thông báo sắp ra…
Nếu đã quá nhàm chán với các đội hình meta hiện tại thì cùng đổi…
Vào hôm thứ tư vừa qua, Twitter chính thức cho anime Edens Zero đã xác…