Làm thế nào để một danh sách 2D hoạt động trong Python?

Thật không may, việc rút ngắn điều này thành một cái gì đó như 5*[5*[0]] không thực sự hiệu quả vì bạn kết thúc với 5 bản sao của cùng một danh sách, vì vậy, khi bạn sửa đổi một trong số chúng, tất cả chúng đều thay đổi, chẳng hạn

>>> matrix = 5*[5*[0]]
>>> matrix
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
>>> matrix[4][4] = 2
>>> matrix
[[0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2]]

Mảng là tập hợp các cấu trúc dữ liệu tuyến tính chứa tất cả các phần tử có cùng kiểu dữ liệu trong không gian bộ nhớ liền kề. Nó giống như một thùng chứa một số phần tử nhất định có cùng kiểu dữ liệu. Chỉ số của mảng bắt đầu từ 0, do đó, lập trình viên có thể dễ dàng xác định vị trí của từng phần tử và thực hiện các thao tác khác nhau trên mảng. Trong phần này, chúng ta sẽ tìm hiểu về mảng 2D [hai chiều] trong Python

Example: 2D Array of Objects # Number of columns and rows in the grid nCols = 10; nRows = 10; def setup[]: global nCols, nRows, grid size[200,200] grid = makeGrid[] for i in xrange[nCols]: for j in xrange[nRows]: # Initialize each object grid[i][j] = Cell[i*20,j*20,20,20,i+j] def draw[]: global nCols, nRows, grid background[0] # The counter variables i and j are also the column and row numbers and # are used as arguments to the constructor for each object in the grid. for i in xrange[nCols]: for j in xrange[nRows]: # Oscillate and display each object grid[i][j].oscillate[] grid[i][j].display[] # Creates a 2D List of 0's, nCols x nRows large def makeGrid[]: global nCols, nRows grid = [] for i in xrange[nCols]: # Create an empty list for each row grid.append[[]] for j in xrange[nRows]: # Pad each column in each row with a 0 grid[i].append[0] return grid # A Cell object class Cell[]: # A cell object knows about its location in the grid # it also knows of its size with the variables x,y,w,h. def __init__[self, tempX, tempY, tempW, tempH, tempAngle]: self.x = tempX self.y = tempY self.w = tempW self.h = tempH self.angle = tempAngle # Oscillation means increase angle def oscillate[self]: self.angle += 0.02; def display[self]: stroke[255] # Color calculated using sine wave fill[127+127*sin[self.angle]] rect[self.x,self.y,self.w,self.h]

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 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

Chủ Đề