Вот моя функция от Python:Почему результаты печати отличаются от функции
def Ggen(word):
result = []
while(len(word)!=1):
a = word.pop()
b = word
temp = (a,b)
print temp
result.append(temp)
return result
Предположим, у меня есть данные называют test = ['f','c','a','m','p']
.
Мой результат генерируется из print
в функции:
('p', ['f', 'c', 'a', 'm'])
('m', ['f', 'c', 'a'])
('a', ['f', 'c'])
('c', ['f'])
Но если я бегу Ggen(test)
я вместо этого:
[('p', ['f']), ('m', ['f']), ('a', ['f']), ('c', ['f'])]
Что случилось с моим кодом. Кто-нибудь, как получить аналогичный результат сверху?
'b = word' ... Просто подумайте об этом. Что такое слово? –
Списки являются изменяемыми. Вы перебираете список в цикле. Вы печатаете их, прежде чем мутировать их, но возвращаете окончательное значение, которое было полностью мутировано. Почему бы не сделать копии списка на разных этапах, если вы хотите сохранить unmutated версии из ранее в цикле? Как бы то ни было, вы просто создаете целую кучу псевдонимов для одного и того же списка. –
Слово - это всего лишь список элементов. Мой алгоритм каждый раз всплывал список и создавал (ключ, значение), где key - данные pop(), а значение - остальные данные в списке. Я продолжаю повторять до тех пор, пока результат не будет таким, как печать должна быть – someone