所以我有一个二维的整数列表,我想分别将一个较小的二维列表分配到第一个列表中。我的意思是如果第一个列表 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]?
非常感谢你。
答案 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])