1

我想在 python 中创建一个每行三列的矩阵,并且能够通过任何一行来索引它们。矩阵中的每个值都是唯一的。

据我所知,我可以设置一个矩阵,如:

matrix = [["username", "name", "password"], ["username2","name2","password2"]...]

但是,我不知道如何从中访问元素。

谢谢

4

3 回答 3

3

如果您能够安装库,请考虑使用numpy。它有一套丰富的工具,可以有效地处理矩形多维数组并对其进行切片。

于 2013-03-02T01:11:00.993 回答
2

您可以使用列表列表:

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
于 2013-03-02T00:58:50.070 回答
1

您演示的是一个由列表列表组成的矩阵。

您可以使用行和列的索引来访问元素:

>>> 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'
于 2013-03-02T01:16:50.910 回答