我想在python中声明一个动态的二维数组。列数将固定,而行数应为动态。我也愿意使用numpy。我使用python 3,所以xrange不起作用。感谢您的帮助。
答案 0 :(得分:0)
以下是我将如何做到这一点
array2d = [list() for f in xrange(n)]
这会创建N个空列表。从这里你可以索引它们像
array2d[x][y]
使用中的示例
array2d = [list() for f in xrange(3)] # We have Three Empty Rows
# Array looks like this -- [[] [] []]
#lets add an item into the first row
array2d[0].append("A")
#Now it looks like this -- [["A"] [] []]
答案 1 :(得分:0)
这应该可以解决您的问题。函数grow_rows
将添加任何所需的行,使用固定的列数并使用0
初始化条目(您可以将其更改为您喜欢的任何内容):
def grow_rows(arr, row_cnt, col_cnt):
missing = row_cnt - len(arr)
if missing > 0:
arr.extend([[0] * col_cnt for i in range(missing)])
这是一个使用固定列数为3的示例。在访问尚未分配的行中的元素之前,它会调用grow_rows
来创建所需的行:
col_cnt = 3
arr = []
print(arr)
grow_rows(arr, 2, col_cnt)
print(arr)
arr[1][2] = 123
print(arr)
这是输出:
[]
[[0, 0, 0], [0, 0, 0]]
[[0, 0, 0], [0, 0, 123]]
答案 2 :(得分:0)
Python 3的示例:
matrix = [list() for f in range(2)]
print(matrix)
输出:
[[],[]]