【问题标题】:Modifying an array keeping a copy [duplicate]修改保留副本的数组[重复]
【发布时间】:2022-01-21 08:21:54
【问题描述】:

我想修改一个数组但保留它的原始版本,所以我编写了代码:

a = ["a","b","c","d","e","f"]
b = a
a.append("g")

我预计:

a = ["a","b","c","d","e","f","g"]
b = ["a","b","c","d","e","f"]

但我找回了:

a = ["a","b","c","d","e","f","g"]
b = ["a","b","c","d","e","f","g"]

无论我将值附加到a 还是b,我都会得到相同的结果。

【问题讨论】:

    标签: python arrays


    【解决方案1】:
    a = ["a","b","c","d","e","f"]
    b = []
    b.extend(a)
    print (b)
    a.append("g")
    print(a)
    

    输出:

    ['a', 'b', 'c', 'd', 'e', 'f']

    ['a', 'b', 'c', 'd', 'e', 'f', 'g']

    【讨论】:

    • "b = a" 并没有按照你的想法做,只是复制了一个引用。您可以使用 list.extend() 或 list.copy()。他们都完成了工作
    • 警告:如果你有一个像a = [[0], [1], [2]] 这样的嵌套列表并使用extend 进行复制,你可能会遇到问题。在a[0].append("g") 之后,您将获得[[0, 'g'], [1], [2]] 对应的b
    • 明白了。但 OP 没有具体说明列表的性质。 OP 已经发布了一个常规列表
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 2019-03-27
    • 2017-02-01
    • 1970-01-01
    相关资源
    最近更新 更多