EDIT: с объяснением указателей, как запрошенной
Ваша проблема заключается в том, что когда вы задаете список к гнезду [0], вы не создаете новый список, ваш просто назначая указатель. Ваш указатель направлен в список, содержащий [ «префикс»]
На вашей первой итерации, вы что-то добавить к этому списку
На вашей второй итерации вы не сделаете новый список, вы просто переточки в Старый.
Затем, когда вы снова добавляете, вы добавляете в старый список!
Что вы имеете в виду:
nest = [['prefix'],['line 1'],['line 2']]
for part in nest[1:]:
list = [] + nest[0]
list += part
print list
Там в несколько способов, чтобы думать об этом. Вот он. Допустим, у вас есть колода карт объекта:
myobj = Deck().
Если бы я тогда сказать,
myobj2 = myobj,
Я не создал новую колоду карт, было бы, как кто-то смотрит на палубе I уже есть. Мы должны иметь возможность сделать это, чтобы сделать много программирования (это основы объектно-ориентированного дизайна)! Мне нужно было бы сказать
myobj3 = Deck()
для создания новой колоды карт.
Рассмотрим:
myobj.shuffle #we're shuffling one deck, that two people are looking at
Оба myobj и myobj2 изменится. Вызов myobj3.shuffle оставляет два других нетронутых. То, что вы сделали, заставило кого-то снова взглянуть на ту же колоду, где вы хотели сделать новую!
спасибо. Код работал. Я не понимаю, почему мой не работает. Поэтому, когда я пытаюсь 'list = ['prefix']', я вижу, что он делает то, что я хочу. Почему указание на тот же объект меняет его? – Rohit
Post-EDIT: Спасибо за объяснение. Я все еще пытаюсь склонить голову, как это относится к моей проблеме. Вы говорите, что 'nest [0]' является объектом 'Deck()' в вашем примере? – Rohit
Ваше «гнездо [0]» - это колода карт. Calling list = nest [0] просто говорит нам посмотреть на колоду (в которой есть слово «префикс»), а затем сохранить этот поиск в месте, помеченном «list». Здесь мы никогда не создаем новую колоду карт или новый список. Поэтому, когда вы добавляете часть в список, вы добавляете новую карту в колоду. На следующей итерации вы снова вызываете list = nest [0], но это просто говорит вам оглянуться на колоду, в которой теперь есть дополнительная карта. Когда мы добавляем еще одну карту, у нас теперь есть две дополнительные услуги. Это помогает? –