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