我目前正在使用Python语言,我正在尝试创建一个类,该类充当包含4个并行列表的矩阵,其长度等于给定句子的长度。每个列表都有自己的行,并包含不同的变量。然而,我试图将句子的每个单独的字母打印成第2行时遇到麻烦。我将如何通过迭代(而不是手动附加它们)来实现这一点?
出于视觉目的,最终结果需要如下所示:
Row 1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Row 2 = [h, e, l, l, o, , w, o, r, l, d]
Row 3 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Row 4 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
以下是我目前的代码。
class Matrix(object):#,Sentence, Cipher_Sentence
def __init__ (self, cols, rows):#, Nav):#, Guess, Crypt, Sent):
self.cols=cols
self.rows=rows
self.sentence=sentence
self.matrix=[]
for i in range (rows):
ea_row=[]
for j in range (cols):
ea_row.append(0)
self.matrix.append(ea_row)
def set_Nav(self, col, row, Nav):
self.matrix[col-1][0]=Nav
def get_Nav(self, col, row):
return self.matrix[col-1][0]
def set_Guess(self, col, row, Guess):
self.matrix[col-1][1]=Guess
def get_Guess(self, col, row):
return self.matrix[col-1][1]
def set_Crypt(self, col, row, Crypt):
self.matrix[col-1][2]=Crypt
def get_Crypt(self, col, row):
return self.matrix[col-1][2]
def set_Sent(self, col, row, Sent):
self.matrix[col-1][3]=Sent
def get_Sent(self, col, row):
return self.matrix[col-1][3]
def __repr__(self):
rowname= ""
for i in range(self.rows):
rowname += 'Row %s = %s\n' %(i+1, self.matrix[i])
return rowname
sentence="hello world"
m=Matrix(len(sentence),4)
print(m)
提前致谢
答案 0 :(得分:1)
好的,我不完全理解你的问题,但我认为你所得到的要点就是你想要一次性设置整行,而不是写信信。
假设您希望set_Guess
要执行的操作是将row
- 行设置为Guess
,那么您可以将其更改为以下内容:
def set_Guess(self, row, Guess):
self.matrix[row][:] = Guess
def get_Guess(self, row):
return self.matrix[row][:]
所以,基本上:
def set_Guess(matrix, row, Guess):
matrix[row][:] = Guess
return matrix
def get_Guess(matrix, row):
return matrix[row][:]
sentence = "hello world"
rows = 4
cols = len(sentence)
matrix = [['0'] * cols for row in range(rows)]
set_Guess(matrix, 1, "hello world")
for rn, row in enumerate(matrix):
print('Row {rnum:d} = [{rvals}]'.format(rnum=rn+1, rvals=', '.join(row)))
这会返回您要查找的内容:
> python testmatrix.py
Row 1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Row 2 = [h, e, l, l, o, , w, o, r, l, d]
Row 3 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Row 4 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
那就是说,我怀疑对于你的特定应用,你并没有以正确的方式做事。我建议您可以将您的申请转到Code Review以获得更多设计方面的帮助。