糙猛快的[i,j] 改为[i][j], 原因是元组或列表(tuple,list)没有矩阵概念,只有嵌套。所以你不能用[i,j]像matlab等里面一样去二维索引一个list,只能用[i][j]这样相当于索引了两次,先索引外层[i]个列表,再索引内层第j个元素。(类似地,[i,j,k…]改为[i][j][k][…]就ok)
当然也可以将你的list或tuple改为numpy里面的array,就可以用 np.array(列表)[i,j]这种形式索引了。
# 元组/列表操作
aMat = tuple([[1,2,3],[2,3,4]]) #tuple
sl = slice(1) # slice
print("元组", aMat, "列表:",list(aMat)) # print(list(aMat))
print("索引tuple,list用 整数或slice: ", aMat[1], aMat[sl], "类型", type(aMat[1]), type(aMat[sl]),"数目", len(aMat[1]), len(aMat[sl]) )
print("引用双嵌套列表里面具体元素的是[i][j],非[i,j]:", aMat[1][2], aMat[sl][0],"类型",type(aMat[1][2]), type(aMat[sl][0]))
# nparray
aMat2 = np.array(aMat)
sl2 = slice(2)
print(aMat2)
print("索引 np用:整数或slice", aMat2[1], aMat2[sl2], "类型", type(aMat[1]), type(aMat2[sl2]),"数目", len(aMat2[1]), len(aMat2[sl2]) )
print("引用ndarray 里面具体元素的是[i,j]:", aMat2[1,2], aMat2[sl2, 2],"类型",type(aMat2[1,2]), type(aMat2[sl2,0]))
list和array有不少小注意点,使用中才能感受深刻,所以注意多用、多思,多总结。