Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的动态二维数组_Python_Arrays_Dynamic_2d - Fatal编程技术网

python中的动态二维数组

python中的动态二维数组,python,arrays,dynamic,2d,Python,Arrays,Dynamic,2d,我想用python声明一个动态二维数组。列的数量将是固定的,而行的数量应该是动态的。我也愿意使用numpy。我使用的是Python3,所以xrange不起作用。感谢您的帮助。以下是我将如何着手做这件事 array2d = [list() for f in xrange(n)] matrix = [list() for f in range(2)] print(matrix)

我想用python声明一个动态二维数组。列的数量将是固定的,而行的数量应该是动态的。我也愿意使用numpy。我使用的是Python3,所以xrange不起作用。感谢您的帮助。

以下是我将如何着手做这件事

array2d = [list() for f in xrange(n)]
matrix = [list() for f in range(2)]    
print(matrix)                                                                
这将创建N个空列表。从这里你可以像这样索引它们

array2d[x][y] 
matrix = [list() for f in range(2)]    
print(matrix)                                                                
使用中的示例

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"] [] []]
matrix = [list() for f in range(2)]    
print(matrix)                                                                

这应该能解决你的问题。函数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)])
matrix = [list() for f in range(2)]    
print(matrix)                                                                
下面是一个使用固定列计数3的示例。在访问尚未分配的行中的元素之前,它会调用grow_rows来创建所需的行:

col_cnt = 3
arr = []

print(arr)

grow_rows(arr, 2, col_cnt)
print(arr)

arr[1][2] = 123
print(arr)
matrix = [list() for f in range(2)]    
print(matrix)                                                                
以下是输出:

[]
[[0, 0, 0], [0, 0, 0]]
[[0, 0, 0], [0, 0, 123]]
matrix = [list() for f in range(2)]    
print(matrix)                                                                

Python 3的示例:

matrix = [list() for f in range(2)]    
print(matrix)                                                                
输出:

matrix = [list() for f in range(2)]    
print(matrix)                                                                
[…],[…]

matrix = [list() for f in range(2)]    
print(matrix)                                                                

或者只是排列2d=[[]表示rangen中的f]是的!只是想让他明白这是在制作嵌入式列表。尝试了两种方法都不起作用。我使用的是Python3,它肯定会。也许我们对行和列有不同的看法?如果我的解决方案有问题,请尝试反转列和行索引。以下是我使用的代码:final_status=[list for f in range3]final_status[0][0]=1 final_status[0][1]=2 print[final_status]。索引器错误:列表分配索引超出范围是否总是在数组底部添加新行?我使用的是arr[x][y]语法。所以加法的顺序并不重要。我的意思是我使用arr[x][y]进行加法,而不是附加记录,所以加法的顺序对我来说无关紧要。为什么这个问题被否决了?我在寻找类似python 2.7中的xrange声明。在python 3中,xrange简单地称为range。如果您正在寻找一个固定大小的解决方案,那么它就是:arr=[[0]对于rangecol中的c\u cnt]对于rangerow中的r\u cnt]这就是您想要的吗?如果需要,您仍然可以增加行数:arr.extend[[0]*col_cnt for i in rangemissing],其中missing是要添加的行数。如果这不是您想要的,那么您没有充分说明问题。