这是我的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'])]
我的代码发生了什么。有人如何从上面得到类似的结果?
答案 0 :(得分:4)
每次word.pop()
您正在更改result
中包含的列表的引用。因此,您正在打印中间值,但最终返回的将是退出while循环的word
列表。
如果您想要返回所看到的内容,则每次pop
时都需要复制一份列表。
def Ggen(word):
result = []
while(len(word)!=1):
result.append((word.pop(),word[:]))
return result