我想在 python 中创建一个每行三列的矩阵,并且能够通过任何一行来索引它们。矩阵中的每个值都是唯一的。
据我所知,我可以设置一个矩阵,如:
matrix = [["username", "name", "password"], ["username2","name2","password2"]...]
但是,我不知道如何从中访问元素。
谢谢
如果您能够安装库,请考虑使用numpy。它有一套丰富的工具,可以有效地处理矩形多维数组并对其进行切片。
您可以使用列表列表:
In [64]: matrix = [["username", "name", "password"],["username2","name2","password2"]]
In [65]: matrix
Out[65]: [['username', 'name', 'password'], ['username2', 'name2', 'password2']]
访问第一行(因为 Python 使用基于 0 的索引):
In [66]: matrix[0]
Out[66]: ['username', 'name', 'password']
访问第一行中的第二项:
In [67]: matrix[0][1]
Out[67]: 'name'
如果要根据用户名查找名称,列表列表不是数据结构的好选择。为此,您必须(可能)遍历 中的所有项目matrix
以查找其用户名与指定用户名匹配的项目。完成搜索的时间将随着矩阵中的行数线性增长。
相比之下,无论字典中有多少键,字典平均都有恒定时间的查找。因此,例如,如果您要定义
matrix = {
'capitano': {'name':'Othello', 'password':'desi123'}
'thewife': {'name':'Desdemona', 'password':'3apples'}
}
(用户名在哪里'capitano'
和'thewife'
是)
然后要找到用户名的人的名字'capitano'
,你会使用
matrix['capitano']['name']
Python 会返回'Othello'
.
函数是 Python 中的一等对象:您可以将它们作为对象传递,就像传递数字或字符串一样。因此,例如,您可以将函数作为值存储在 dict 的 (key, value) 对中:
from __future__ import print_function
matrix = {'hello': {'action': lambda: print('hello')} }
然后调用函数,(注意括号):
matrix['hello']['action']()
# hello
您演示的是一个由列表列表组成的矩阵。
您可以使用行和列的索引来访问元素:
>>> matrix[0] # This will return the 0th row
['username', 'name', 'password']
>>> matrix[0][1] # This will return the element from row 0, col 1
'name'