Bạn có thể tạo ra nó sử dụng danh sách lồng nhau:
matrix = [[a,b],[c,d],[e,f]]
Nếu nó có phải năng động đó là phức tạp hơn, tại sao không viết một lớp học nhỏ cho mình?
class Matrix(object):
def __init__(self, rows, columns, default=0):
self.m = []
for i in range(rows):
self.m.append([default for j in range(columns)])
def __getitem__(self, index):
return self.m[index]
Điều này có thể được sử dụng như thế này:
m = Matrix(10,5)
m[3][6] = 7
print m[3][6] // -> 7
tôi chắc chắn rằng người ta có thể thực hiện nó hiệu quả hơn. :)
Nếu bạn cần mảng đa chiều, bạn có thể tạo mảng và tính toán độ lệch hoặc bạn sử dụng mảng trong mảng trong mảng, điều này có thể khá tệ đối với bộ nhớ.(Có thể là nhanh hơn mặc dù ...) Tôi đã thực hiện những ý tưởng đầu tiên như thế này:
class Matrix(object):
def __init__(self, *dims):
self._shortcuts = [i for i in self._create_shortcuts(dims)]
self._li = [None] * (self._shortcuts.pop())
self._shortcuts.reverse()
def _create_shortcuts(self, dims):
dimList = list(dims)
dimList.reverse()
number = 1
yield 1
for i in dimList:
number *= i
yield number
def _flat_index(self, index):
if len(index) != len(self._shortcuts):
raise TypeError()
flatIndex = 0
for i, num in enumerate(index):
flatIndex += num * self._shortcuts[i]
return flatIndex
def __getitem__(self, index):
return self._li[self._flat_index(index)]
def __setitem__(self, index, value):
self._li[self._flat_index(index)] = value
có thể được sử dụng như thế này:
m = Matrix(4,5,2,6)
m[2,3,1,3] = 'x'
m[2,3,1,3] // -> 'x'
Ngẫu nhiên, bạn có thể nhận được dấu chấm động vô cực trong python như' float ('inf') '. Nó hoạt động nhiều hơn hoặc ít hơn như bạn mong đợi - hầu hết các hoạt động chỉ cung cấp cho bạn inf, và một vài cung cấp cho bạn nan. –
(được kết hợp với câu hỏi trước đó, giữ nguyên bản gốc như sau: OP vẫn tồn tại, b: câu hỏi có độ phân giải cao hơn và c: để tránh nhiều necromancer) –