对于循环,列表追加

时间:2016-02-24 19:44:20

标签: list python-2.7 append

我有一个简单的代码

a_list=[1,2,3,4,5]
a2_list=[]
for x in a_list:
    a2_list.append(x*2)

我得到a2_list=[2,4,6,8,10]

如果我写代码

a_list=[1,2,3,4,5]
a2_list=[]
for x in a_list:
    a2_list.append(x*2)
    print a2_list

我得到了

[2]
[2,4]
[2,4,6]
[2,4,6,8]
[2,4,6,8,10]

我想制作一个列表来记录每一步

a_list=[1,2,3,4,5]
a2_list=[]
b_list=[]
for x in a_list:
    a2_list.append(x*2)
    b_list.append(a2_list)

我想获得b_list = [[2],[2,4],[2,4,6],[2,4,6,8],[2,4,6,8,10]]

但我得到b_list=[[2,4,6,8,10],[2,4,6,8,10],[2,4,6,8,10],[2,4,6,8,10],[2,4,6,8,10]]

这似乎是一个非常容易的问题,但我无法弄清楚我做错了什么

2 个答案:

答案 0 :(得分:2)

有效

a_list=[1,2,3,4,5]
a2_list=[]
b_list=[]
for x in a_list:
    a2_list.append(x*2)
    b = a2_list[:]
    b_list.append(b)

答案 1 :(得分:0)

这是因为listmutable个对象。您应该了解it。可能的解决方案是按照其他人的建议复制列表。 e.g。

a_list = [1,2,3,4,5]
a_list = list(a_list)
or
a_list = a_list[:]

还有其他方法too