2D数组的Python列表拼接

时间:2019-03-18 13:53:07

标签: python python-3.x arraylist multidimensional-array

matrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
matrix[3][1:] = matrix[3][0:-1]
print(matrix)

给出以下输出:

[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 13, 14, 15]]

但是:

rows = 3
k = 0
matrix[rows-k][1+k:-k] = matrix[rows-k][k:-1-k]
print(matrix)

给出以下输出:

[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 13, 14, 15, 14, 15, 16]]

有人可以告诉我发生了什么事吗?

2 个答案:

答案 0 :(得分:0)

有趣的问题。

发生这种情况是因为

matrix[rows-k][1+k:-k] = matrix[rows-k][k:-1-k]

等效于

matrix[3][1:0] = matrix[3][0:-1]

等效于

matrix[3][1:1] = matrix[3][0:-1]

因此,当您执行matrix[3][1:0] => matrix[index][start:stop:None]

您的起始值为1,大于您的终止值0。在start> = stop的情况下,Python设置stop = start并返回一个空切片。

您可以检查matrix [3] [1:1]的值,它是一个像矩阵[3] [1:0]一样的空切片

>>> matrix[3][1:0]
[]
>>> matrix[3][1:1]
[]

了解更多:Python doc

  

如果i大于或等于j,则切片为空

答案 1 :(得分:-2)

如果您插入的行= 3并且k = 0:

const test = () => {
  const request = 'hello';
  return {
    request,
    response: [{
      originalRequest: request
    }]
  }
}

console.log(test());

与您的第二行一样不同

matrix[3][1:0] = matrix[3][0:-1]

已添加。

在第一个示例中,您从 1插入一些数据。位置到底

matrix[3][1:] = matrix[3][0:-1]

在第二种情况下,您在0和1.位置之间插入一个值

a = [1, 2, 3, 4]
a[1:] = [100, 200, 300]
print(a)
OUTPUT: [1, 100, 200, 300]