遍历二维列表时接收到意外输出

时间:2019-10-04 01:53:29

标签: python list iteration

我有一个二维列表,我想初始化第一行和第一列。行和列的值都应该相同,并且应从0开始并减少-2。这个问题必须很简单,但是我想我对Python的内部运作还不够了解,无法知道它是什么。

我尝试使用普通的for循环,范围,枚举,似乎没有任何方法可以解决问题。

import sys

GAP = -2
queryStrand = ''
subjectStrand = ''
pathMatrix = []  

def createMatrix(query, subject):
# Creates matrix full of 0s with extra index
  matrix = [[0]*(len(query) + 1)]*(len(subject) + 1)

  for i in range(len(matrix)): # Initializes top row
    matrix[i][0] = i * GAP

  for j in range(len(matrix[0])): # Initializes first column
    matrix[0][j] = j * GAP

  return matrix


def writeMatrix(matrix):
  file = open('output.txt', 'w')
  for y in range(len(matrix[0])):
    row = ''
    for x in range(len(matrix)):
      row += str(matrix[x][y])
    file.write(row + '\n')
  file.close()

预期结果将是这样的第一行和第一列:

 0-2-4-6-8-10-12-14-16...
-2 0 0 0 0 0  0  0  0
-4 0 0 0 0 0  0  0  0
-6 0 0 0 0 0  0  0  0
...

相反,第一行初始化循环产生:

-774-774-774-774...
0   0   0   0
0   0   0   0
...

第一列初始化循环产生:

 0 0 0 0 0...
-2-2-2-2-2
-4-4-4-4-4
-6-6-6-6-6
...

这也是不正确的,因为它会破坏第一行并删除中间的所有零。

0 个答案:

没有答案