[英]Print data from column and row in matrix
假设我有一个像这样的矩阵
table = [
# grid: 4 by 9
['A','B','C','D'],
['E','F','G','H'],
['I','J','K','L'],
['M','N','O','P'],
['Q','R','S','T'],
['U','V','W','X'],
['Y','Z','1','2'],
['3','4','5','5'],
['7','8','9','0'],
]
如果我想在第三列(2x,3y)上向下打印两个字符串,则结果为G。 我如何告诉python它应该是网格? 以及如何返回列表信息,table.find(某物)不起作用(说表没有find属性)我对python来说还很新。 我搜索了互联网,没有太多帮助。
编辑:我一定做错了什么?
table = [
# grid: 4 by 9
# 1 2 3 4
['A','B','C','D'],#1
['E','F','G','H'],#2
['I','J','K','L'],#3
['M','N','O','P'],#4
['Q','R','S','T'],#5
['U','V','W','X'],#6
['Y','Z','1','2'],#7
['3','4','5','5'],#8
['7','8','9','0'],#9
]
print table[1][2], table[4][3]
打印O和T。O是正确的,但T不是,那不是第5行吗?
我正在尝试编写一种具有文本矩阵的文本位置加密算法,就像其中一种著名的密码(我不记得它的名字)一样。
我想将每个字母的所说打印应用于raw_input捕获的文本,我之前使用过字典,但是如果可能的话,我想尝试使用此行/列方法,这将很难破解。
table[1][2]
将在第二行第三列中给出值(因为索引从0开始)。
更具体地说,您要指定的是列表列表 ,因此table[1]
将解析为['E','F','G','H']
(整个列表中的第二项),以及然后将其的第三个元素与[2]
会得到'G'
。
table = [
['A','B','C','D'],
['E','F','G','H'],
['I','J','K','L'],
['M','N','O','P'],
['Q','R','S','T'],
['U','V','W','X'],
['Y','Z','1','2'],
['3','4','5','5'],
['7','8','9','0'],
]
# grid 4 by 9, 4 column, 9 row
rownum=3
colnum=2
print(table[rownum-1][colnum-1])
列表索引从零开始,因此列表中的第四个元素的索引为3。您可以定义一个辅助函数,以按其“实际位置”获得项目/列。
def column(matrix, i):
return [row[i-1] for row in matrix]
column(table,2)
Out[15]:
['B', 'F', 'J', 'N', 'R', 'V', 'Z', '4', '8']
def getitem(matrix,row,column):
return matrix[row-1][column-1]
getitem(table,2,3)
Out[16]:
'G'
至于您的编辑, table[1][2]
应该打印G
,而不是O
而table[4][3]
正确地返回T
您是指http://en.wikipedia.org/wiki/Vigenere_cipher吗?
如果要使用矩阵,则建议使用numpy
(一个简单的示例):
>>> import numpy as np
>>> a = np.array(table)
>>> a
array([['A', 'B', 'C', 'D'],
['E', 'F', 'G', 'H'],
['I', 'J', 'K', 'L'],
['M', 'N', 'O', 'P'],
['Q', 'R', 'S', 'T'],
['U', 'V', 'W', 'X'],
['Y', 'Z', '1', '2'],
['3', '4', '5', '5'],
['7', '8', '9', '0']],
dtype='|S1')
>>> print a[1,2]
G
>>> np.where(a=='G')
(array([1]), array([2]))
还有一个经常被忽略的字符串方法,可以用来替换文本(但是您决定这样做)。
>>> from string import maketrans
>>> trans = maketrans('AB', 'XY') # A->X, B->Y, everything else unchanged
>>> 'ABC'.translate(trans)
'XYC'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.