【问题标题】:For loop, list appendfor循环,列表追加
【发布时间】:2016-02-24 19:44:20
【问题描述】:

我有一个简单的代码

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]]

这似乎是一个非常简单的问题,但我不知道我做错了什么

【问题讨论】:

标签: list python-2.7 append


【解决方案1】:

有效

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)

【讨论】:

    【解决方案2】:

    这是因为 listmutable 对象。你应该了解it。可能的解决方案是按照其他人的建议复制列表。 例如

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

    还有其他方法too

    【讨论】:

      猜你喜欢
      • 2018-11-16
      • 2018-03-10
      • 2018-10-08
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多