首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python for循环中追加函数机制

python for循环中追加函数机制
EN

Stack Overflow用户
提问于 2018-07-13 03:02:18
回答 4查看 65关注 0票数 1

根据定义,List.append(elem)会在列表的末尾添加一个元素。

但是,以下代码的结果并不符合规则:

代码语言:javascript
复制
lista = []

listb = []

for i in "abc":

    lista.append(i)

    listb.append(lista)

print(listb)

结果是:

[['a', 'b', 'c'], ['a', 'b', 'c'], ['a', 'b', 'c']]

根据规则,结果应该是

[['a'], ['a', 'b'], ['a', 'b', 'c']]

为什么会这样呢?如何得到第二个结果呢?

EN

回答 4

Stack Overflow用户

发布于 2018-07-13 03:04:41

因为你没有附加'a','a','b‘和'a','b','c’,而是三次引用lista。而lista发生了变化,因此它显示了list (a)三次原样。

票数 1
EN

Stack Overflow用户

发布于 2018-07-13 03:08:54

您仅向lista追加了对listb的引用。要获得想要的结果,您需要将listb的副本添加到lista (在本例中是足够简单的list() ):

代码语言:javascript
复制
lista = []    
listb = []

for i in "abc":    
    lista.append(i)    
    listb.append(list(lista))

print(listb)

结果:

代码语言:javascript
复制
[['a'], ['a', 'b'], ['a', 'b', 'c']]
票数 1
EN

Stack Overflow用户

发布于 2018-07-13 03:09:38

Copy()可以做到这一点:

代码语言:javascript
复制
lista = []

listb = []

for i in "abc":

    lista.append(i)

    listb.append(lista.copy())

print(listb)

你把a的引用加到b上,然后操纵a...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51312766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档