如果我们知道行数和列数取决于某些条件,那么如何在python中创建2d数组?

如果我们知道行数和列数取决于某些条件,那么如何在python中创建2d数组?,python,Python,我的数组最大维度可能是2x27,但列数可能低于27。列数取决于某些条件。初始化数组2x27然后删除不必要的列是一个好的解决方案,还是有更优雅的方法来实现这一点?对于如此少的元素,使用字典,元组作为键: dct = {} dct[(0,0)] = 'X' if (10,10) in dct: dct[(10,10)] += 1 else: dct[(10,10] = 0 # Deleting a row / column dct.pop((10,0)) dct.pop((10,1)

我的数组最大维度可能是2x27,但列数可能低于27。列数取决于某些条件。初始化数组2x27然后删除不必要的列是一个好的解决方案,还是有更优雅的方法来实现这一点?

对于如此少的元素,使用字典,元组作为键:

dct = {}
dct[(0,0)] = 'X'
if (10,10) in dct:
    dct[(10,10)] += 1
else:
    dct[(10,10] = 0
# Deleting a row / column
dct.pop((10,0))
dct.pop((10,1))
...
dct.pop((10,10))
字典非常灵活


或者使用numpy数组。

这里有一个简单的处理方法:

num_rows, num_cols = 2, 27
table = []

for r in range(num_rows):
    row = []
    table.append(row)
    for c in range(num_cols):
        row.append(c)

print table

不,构建一个更大的阵列然后删除其中的一部分没有什么特别的意义——只构建您需要的。假设“2d数组”实际上是指“列表列表”:


这是不起作用的。在解释器中看起来合理,但它引用同一个对象,而不是具有单独内存的单独对象
my_2d_array=[[“x”]*COLS]*行
这并不坏,除非你需要缩小/扩大坏男孩。真的一切都取决于提问者想做什么。好吧,我现在觉得很愚蠢:)而且,我想你可能已经把nrows和ncols倒过来了…@Jesse,你对cols/rows的看法是对的(我想你可以把这个家伙从Fortran中去掉,但你不能把Fortran从这个家伙身上去掉!---现在编辑,谢谢。
def makarray(value, nrows, ncols):
  return [[value]*ncols for _ in range(nrows)]