2013-09-30 3 views
0

Я новичок в python, и у меня возникают проблемы с некоторыми аспектами языка. Сейчас я пытаюсь создать трехмерную таблицу, которая может содержать определенные значения.Добавление к элементу в массиве

таблица [х] [у] [г]

Х и Y оба инициализирован, чтобы иметь одинаковое число элементов, и г инициализируется быть пустой список как так

table = [[[]]*length]*length 

так что таблица длины 3 будет выглядеть так:

[[], [], []], [[], [], []], [[], [], []]]

При определенных значениях x, y я хотел бы иметь возможность добавить список особых z, например это

table[0][2].append('S') 

бы привести таблицу выглядеть

[[[], [], [ 'S']], [[], [], []], [[], [ ], []]]

, но это выходит, как это

[[[ 'S'], [ 'S'], [ 'S']], [[ 'S'], [» S '], [' S ']], [[S'], ['S'], ['S']]]

так, чтобы каждый список z был добавлен. Почему это происходит и как я могу это исправить. Я могу обойти это неэффективно, но я не хочу этого.

+0

См. Также http://stackoverflow.com/questions/14190513/append-to-a-sublist-appends-to-every-sublist/14190543#14190543 – Ryan

ответ

1

Заявление

table = [[[]]*length]*length

Просто дает ссылки на те же 2 сокровенные списков снова и снова.

+0

Извините, что я ужасно плохо разбираюсь в терминологии python. Вы говорите, что для каждого значения x и y используется тот же самый внутренний список []? И если у вас есть какие-либо рекомендации относительно того, как я буду использовать разные внутренние списки? цикл for, где внутренний цикл - таблица [x] [y] = []? –

+0

отсортировано спасибо еще раз! –

Смежные вопросы