我并不清楚您要做什么。 Python 中最接近二维数组的是列表列表。但是,您现在拥有的是单个列表,而不是 2D 列表。 2D 列表如下所示(将这些名称替换为更有意义的名称):
list_of_lists = [[header0, header1, header2 ],
[r1c0data, r1c1data, r1c2data],
[r2c0data, r2c1data, r2c2data]]
要追加一行,您只需添加一个列表(即list_of_lists.append(new_list))。要附加一列,您必须将一个项目添加到教学列表的末尾,如下所示:
c4data = [header3, r1c3data, r2c3data]
for i, row in enumerate(list_of_lists):
row.append(c4data[i])
如果您真的想要二维数组,最好使用numpy.array。
但是您是否希望按列标题索引各个行?如果是这样,您最好使用字典列表:
list_of_dicts = [{'column0':r0c0data, 'column1':r0c1data, 'column2':r0c2data},
{'column0':r1c0data, 'column1':r1c1data, 'column2':r1c2data}]
您甚至可以将其缩减为一个字典,使用元组来处理单个元素:
tuple_key_dict = {(0, 0):r0c0data, (0, 1):r0c1data, (0, 2):r0c2data,
(0, 1):r0c1data, (1, 1):r1c1data, (1, 2):r1c2data}
这些方法中的每一种都适用于不同的任务。您甚至可能需要使用数据库。我们需要知道更多关于你在做什么来告诉你。
好吧,做你想做的事,根本不需要列表的列表。只需创建一个字符串列表,每个字符串代表密码字符串相应索引处的可能字符。例如,假设用户使用的密码是德语和英语单词“appletree”的组合,但不记得是哪个组合:
>>> char_list = [''.join(set((a, b))) for a, b in zip('apfelbaum', 'appletree')]
>>> char_list
['a', 'p', 'pf', 'el', 'el', 'bt', 'ar', 'eu', 'em']
char_list 现在包含每个索引处所有可能的字母。要生成所有可能的密码,您只需要这些字符串的笛卡尔积:
>>> import itertools
>>> password_list = [''.join(tup) for tup in itertools.product(*char_list)]
>>> print 'appletree' in password_list
True
>>> print 'apfelbaum' in password_list
True
>>> print 'apfletrum' in password_list
True