Mảng hai chiều là một mảng trong một mảng. Nó là một mảng của các mảng. Trong kiểu mảng này, vị trí của một phần tử dữ liệu được gọi bằng hai chỉ số thay vì một. Vì vậy, nó đại diện cho một bảng với các hàng và dcột dữ liệu
Trong ví dụ dưới đây về mảng hai chiều, quan sát thấy rằng bản thân mỗi phần tử của mảng cũng là một mảng
Xem xét ví dụ về ghi lại nhiệt độ 4 lần một ngày, mỗi ngày. Đôi khi thiết bị ghi có thể bị lỗi và chúng tôi không thể ghi dữ liệu. Dữ liệu như vậy trong 4 ngày có thể được trình bày dưới dạng mảng hai chiều như bên dưới
Day 1 - 11 12 5 2 Day 2 - 15 6 10 Day 3 - 10 8 12 5 Day 4 - 12 15 8 6
Dữ liệu trên có thể được biểu diễn dưới dạng mảng hai chiều như bên dưới
T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]
Truy cập giá trị
Các phần tử dữ liệu trong mảng hai chiều có thể được truy cập bằng hai chỉ số. Một chỉ mục đề cập đến mảng chính hoặc mảng cha và một chỉ mục khác đề cập đến vị trí của phần tử dữ liệu trong mảng bên trong. Nếu chúng ta chỉ đề cập đến một chỉ mục thì toàn bộ mảng bên trong được in cho vị trí chỉ mục đó
Ví dụ
Ví dụ dưới đây minh họa cách nó hoạt động
from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] print[T[0]] print[T[1][2]]
đầu ra
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau -
[11, 12, 5, 2] 10
Để in ra toàn bộ mảng hai chiều chúng ta có thể sử dụng vòng lặp for python như hình bên dưới. Chúng tôi sử dụng cuối dòng để in ra các giá trị trong các hàng khác nhau
Ví dụ
from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] for r in T: for c in r: print[c,end = " "] print[]
đầu ra
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau -
11 12 5 2 15 6 10 10 8 12 5 12 15 8 6
Chèn giá trị
Chúng ta có thể chèn các phần tử dữ liệu mới vào vị trí cụ thể bằng cách sử dụng phương thức insert[] và chỉ định chỉ mục
Ví dụ
Trong ví dụ dưới đây, một phần tử dữ liệu mới được chèn vào vị trí chỉ số 2
from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] T.insert[2, [0,5,11,13,6]] for r in T: for c in r: print[c,end = " "] print[]
đầu ra
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau -
11 12 5 2 15 6 10 0 5 11 13 6 10 8 12 5 12 15 8 6
Cập nhật giá trị
Chúng ta có thể cập nhật toàn bộ mảng bên trong hoặc một số thành phần dữ liệu cụ thể của mảng bên trong bằng cách gán lại các giá trị bằng cách sử dụng chỉ số mảng
Ví dụ
________số 8đầu ra
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau -
11 12 5 7 15 6 10 11 9 12 15 8 6
Xóa các giá trị
Chúng ta có thể xóa toàn bộ mảng bên trong hoặc một số thành phần dữ liệu cụ thể của mảng bên trong bằng cách gán lại các giá trị bằng phương thức del[] với chỉ mục. Nhưng trong trường hợp bạn cần xóa các phần tử dữ liệu cụ thể ở một trong các mảng bên trong, thì hãy sử dụng quy trình cập nhật được mô tả ở trên
Hướng dẫn này dành cho Chế độ Python của Xử lý. Nếu bạn thấy bất kỳ lỗi nào hoặc có ý kiến, xin vui lòng cho chúng tôi biết. Hướng dẫn này được điều chỉnh từ cuốn sách, Learning Processing, của Daniel Shiffman, được xuất bản bởi Nhà xuất bản Morgan Kaufmann, Bản quyền © 2008 Elsevier Inc. Đã đăng ký Bản quyền
Một danh sách theo dõi nhiều mẩu thông tin theo thứ tự tuyến tính hoặc một thứ nguyên. Tuy nhiên, dữ liệu được liên kết với một số hệ thống nhất định [hình ảnh kỹ thuật số, trò chơi trên bàn cờ, v.v. ] sống trong hai chiều. Để trực quan hóa dữ liệu này, chúng ta cần một cấu trúc dữ liệu đa chiều, nghĩa là một danh sách đa chiều
Danh sách hai chiều thực sự không gì khác hơn là danh sách các danh sách [danh sách ba chiều là danh sách các danh sách]. Hãy nghĩ về bữa tối của bạn. Bạn có thể có một danh sách một chiều về mọi thứ bạn ăn
[xà lách, cà chua, sốt salad, bò bít tết, khoai tây nghiền, đậu que, bánh ngọt, kem, cà phê]Hoặc bạn có thể có một danh sách hai chiều gồm ba món, mỗi món chứa ba thứ bạn ăn
[xà lách, cà chua, nước xốt salad] và [bít tết, khoai tây nghiền, đậu que] và [bánh ngọt, kem, cà phê]
Trong trường hợp danh sách, danh sách một chiều kiểu cũ của chúng ta trông như thế này
T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]0
Và một danh sách hai chiều trông như thế này
T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]1
Đối với mục đích của chúng tôi, tốt hơn là coi danh sách hai chiều như một ma trận. Một ma trận có thể được coi là một mạng lưới các số, được sắp xếp theo hàng và cột, giống như một bảng bingo. Chúng ta có thể viết danh sách hai chiều như sau để minh họa điểm này
T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]2
Chúng ta có thể sử dụng loại cấu trúc dữ liệu này để mã hóa thông tin về một hình ảnh. Ví dụ: hình ảnh thang độ xám sau đây có thể được biểu thị bằng danh sách sau
T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]3
Để duyệt qua mọi phần tử của danh sách một chiều, chúng tôi sử dụng vòng lặp for, nghĩa là
T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]4
Đối với danh sách hai chiều, để tham chiếu đến mọi phần tử, chúng ta phải sử dụng hai vòng lặp lồng nhau. Điều này mang lại cho chúng ta một biến đếm cho mọi cột và mọi hàng trong ma trận
T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]5
Ví dụ: chúng ta có thể viết một chương trình sử dụng danh sách hai chiều để vẽ một hình ảnh thang độ xám
T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]6
Một danh sách hai chiều cũng có thể được sử dụng để lưu trữ các đối tượng, điều này đặc biệt thuận tiện cho các bản phác thảo lập trình liên quan đến một số loại "lưới" hoặc "bảng". " Ví dụ sau hiển thị một lưới các đối tượng Ô được lưu trữ trong danh sách hai chiều. Mỗi ô là một hình chữ nhật có độ sáng dao động từ 0-255 với hàm sin
T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]7
Hướng dẫn này dành cho Chế độ Python trong Xử lý 2+. Nếu bạn thấy bất kỳ lỗi nào hoặc có ý kiến, xin vui lòng cho chúng tôi biết. Hướng dẫn này được điều chỉnh từ cuốn sách, Learning Processing của Daniel Schiffman, của Daniel Shiffman, được xuất bản bởi Nhà xuất bản Morgan Kaufmann, Bản quyền © 2008 Elsevier Inc. Đã đăng ký Bản quyền