多维(列表到子列表)分配

时间:2013-07-25 03:46:19

标签: python multidimensional-array

所以我有一个二维的整数列表,我想分别将一个较小的二维列表分配到第一个列表中。我的意思是如果第一个列表 a 是这样的:

  

[[2, 2 2 2 ]
  ,[2, 2 2 2 ]
  ,[2,2,2,2]]

我要分配此列表

  

[[1,1,1]
  ,[1,1,1]] [实际上[[1] * 3] * 2)

到位置[0:2] [1:4]的第一个列表 a 然后它应该成为

  

[[2, 1 1 1 ]
  ,[2, 1 1 1 ]
  ,[2,2,2,2]]

我目前正在使用这段代码

for i in range(0,2):
    a[i][1:4]=[1]*3

,它使用1维浅拷贝[?:?]列表赋值 那么有没有办法得到一个亚二维列表,比如[i:y] [j:z]?
非常感谢你。

2 个答案:

答案 0 :(得分:3)

使用Python列表无法做到这一点。列表基本上围绕一维操作。不过,NumPy数组对各种多维操作都有很大的支持。使用数组,你可以做

a[:2, 1:] = 1

并将数字1分配给多维子阵列中的所有位置。如果您正在进行大量的阵列操作,请查看它。

答案 1 :(得分:0)

如果您正在寻找整洁的代码,为什么不为它自己创建函数呢?

def set_items(arr, val, x_lims, y_lims):
    for i in range(x_lims[0], x_lims[1]):
        arr[i][y_lims[0]:y_lims[1]] = val

set_items(a, [1]*3, [0, 2], [1, 4])