Мне не сразу понятно, что ты пытаешься сделать. Самым близким к двумерному массиву, который есть в 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])
Если вы действительно хотите 2D-массивы, вам лучше использовать 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