Собственно, подумайте об этом в другом случае. Предположим, что если ваш список таков:
[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
, и если вы напишете myList[0][0] = 5
, вы получите:
>>>
[[5, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
>>>
Как и ожидалось. Но так как вы определяете свою переменную списка следующим образом:
[[1] * 4] * 3
Python обработает ваши коды по этому шаблону. Поэтому, если вы напишете myList[0][0]
и ваш список, как указано выше, Python обработает его, как [1]*3
. Вот почему все списки первых элементов изменены.
Документация Octave, которая, по-видимому, классифицируется в большей степени по использованию, чем по ключевым словам, в индексных выражениях также явно выражена:
В индексных выражениях ключевое слово
BLOCKQUOTE>end
автоматически относится к последней записи для конкретного измерения. Этот магический индекс также может использоваться в диапазонах и, как правило, устраняет необходимость вызывать размер или длину для сбора границ массива перед индексацией.
Попробуйте help end
в Октаве. Это даст вам то, что вы ищете.
В Octave и Matlab есть две функции поиска помощи, help
и doc
. (doc
- это то, что вызывает браузер документации GUI.) И они дадут вам разные результаты для одинаковых тем! Поэтому всегда пробуйте оба, когда вы ищете что-то.
И нет ничего плохого в том, чтобы просмотреть ответы Matlab doco и Stack Overflow. Octave довольно совместим с Matlab, поэтому все, что вы найдете там для базовых языковых функций (за исключением string
, table
и datetime
), будет применяться и к Octave.