3 回答
TA贡献1815条经验 获得超6个赞
根据要求对指针进行说明
您的问题是,当您将列表分配给nest [0]时,您并没有创建新列表,而只是分配了一个指针。您的指针将指向包含['prefix']的列表
在您的第一次迭代中,您将一些东西添加到此列表中
在第二次迭代中,您没有列出新列表,只是指向旧列表。
然后,当您再次追加时,您将追加到旧列表!
您的意思是:
nest = [['prefix'],['line 1'],['line 2']]
for part in nest[1:]:
list = [] + nest[0]
list += part
print list
有几种方法可以考虑这一点。这是一个 假设您有一副纸牌对象:
myobj = Deck().
如果我再说,
myobj2 = myobj,
我还没有创建新的牌组,就像其他人正在查看我已经拥有的牌组一样。我们需要能够进行大量编程(这是面向对象设计的基础)!我需要说
myobj3 = Deck()
构造一个新的纸牌对象。
考虑:
myobj.shuffle #we're shuffling one deck, that two people are looking at
myobj和myobj2都将更改。调用myobj3.shuffle会使其他两个保持不变。您所做的一切告诉某人重新查看同一副牌,这意味着您要制作一个新牌!
TA贡献1934条经验 获得超2个赞
这只是简单的说明:
错的
'list += part'
在
' for part in nest[1:]:
list = nest[0]
list += part
print list'
变量列表将在每次迭代中更改其值..我的意思是,变量列表将分配给以下值:
list = ['prefix'],然后在第一次迭代后将其重新分配为:
list = ['prefix','line 1'] ##注意循环执行列表+ = part,如果继续,它将获得[nest]的所有成员
因此,解决方案着重于gitting独立变量,该变量在每次迭代中均保持不变
'list = [] + nest[0]'
添加回答
举报