Предположим, у меня есть кортеж (1, 2, 3)
и я хочу индексировать многомерный массив, например:
index = (1, 2, 3)
table[index] = 42 # behaves like table[1][2][3]
index
имеет неизвестное количество измерений, поэтому я не могу сделать:
table[index[0]][index[1]][index[2]]
Я знаю, что мог бы сделать что-то вроде этого:
functools.reduce(lambda x, y: x[y], index, table)
но это совершенно некрасиво (и, возможно, также неэффективно), поэтому мне интересно, есть ли лучший, более питонский выбор.
РЕДАКТИРОВАТЬ: Может быть лучший выбор простой цикл:
elem = table
for i in index:
elem = elem[i]
EDIT2: На самом деле, существует проблема с обоими решениями: я не могу присвоить значение индексированному массиву :-(, обратно к уродливому:
elem = table
for i in index[:-1]:
elem = elem[i]
elem[index[-1]] = 42