首页 > 试题广场 >

执行下列选项代码,输出[1, {'age': 10}]的是(

[单选题]

执行下列选项代码,输出[1, {'age': 10}]的是()

  • a = [1,{'age':10}]

    b = a

    a[1]['age'] = 12

    print(b)

  • a = [1,{'age':10}]

    b = a[:]

    a[1]['age'] = 12

    print(b)

  • a = [1,{'age':10}]
    b = a.copy()
    a[1]['age'] = 12
    print(b)
  • import copy

    a = [1,{'age':10}]

    b = copy.deepcopy(a)

    a[1]['age'] = 12

    print(b)

浅拷贝:切片,赋值,调用copy模块的copy方法
深拷贝:用copy模块的deepcopy方法
浅拷贝原数据改变时,拷贝数据也发生改变;深拷贝原数据改变时,拷贝数据不发生改变。
发表于 2021-12-22 14:16:12 回复(7)
B项[:]切片是浅拷贝
发表于 2021-12-12 13:06:49 回复(0)
A选项,赋值,新定义一个变量b,指向变量a指向的内存地址。两个变量指向了同一个内存地址。 B和C,都是浅拷贝,复制了a指向内存地址的值,但是不包括内部可变元素,像列表,字典等。 D深拷贝,递归复制。
发表于 2022-05-01 16:13:40 回复(0)
A:引用
B:列表切片会创建副本,属于是原对象的浅拷贝
C:浅拷贝,值类型的值会拷贝,但是引用型的值如:list、tuple等,还是引用,不拷贝
D:深度拷贝,所有值都拷贝一份
发表于 2023-08-11 18:12:26 回复(0)
常见的浅拷贝的操作有:切片,赋值,调用的是copy方法
深拷贝的操作有:使用copy库里面的deepcopy方法
浅拷贝的时候,数据发生改变时候,拷贝的数据,会发生改变,深拷贝的原数据的时候,不会改变原数据,是完全独立的内容
发表于 2022-05-18 10:56:02 回复(2)
copy.deepcopy()  深拷贝
发表于 2022-04-10 13:37:40 回复(0)
1. =的本质是引用,即被赋值的变量指向原来的变量,所以原来的变量改变了,新的变量也会改变;
2. 全切片相当于浅拷贝,对于可变对象(列表和字典)来说,浅拷贝即开辟了新的内存地址,但是浅拷贝只能拷贝一层,即拷贝到‘age’,而这个‘age’仍然指向被拷贝对象指向的地址;所以被拷贝对象的age的值改变,拷贝对象的值也会改变;
3. copy.copy()指的就是浅拷贝;
4. deepcopy()是深拷贝,即将被拷贝对象的全部内容递归拷贝到新的内存空间中,即自立门户互不影响,所以被拷贝对象怎么改变值也不会影响拷贝对象。
发表于 2023-10-04 20:12:02 回复(0)
B复制了A,A变,B变,浅拷贝,切片,赋值,调用copy模块的copy方法
B复制了A,A变,B不变,深拷贝,用copy模块的deepcopy方法
发表于 2022-07-19 10:29:27 回复(0)

1赋值操作是两个变量指向了同一个内存地址,原始变量改变,被赋值的变量也会做相同的改变

2)切片操作并没有复制可变类型的元素而是复制了可变类型的地址,相当于浅拷贝。

(3)有两层数据类型时,浅拷贝只能拷贝到外层,即拷贝后的内层数据地址都不变,因此,修改原始对象内层的可变对象,会影响拷贝对象;
(4)当内层为可变数据类型时,深拷贝后内层外层地址均发生改变,因此,改变原始对象的内层可变对象,不会影响拷贝对象。


发表于 2023-11-18 11:20:12 回复(0)
没理解浅拷贝和深拷贝,得加深学习
发表于 2023-04-05 03:48:04 回复(0)
<p>切片是浅考拷贝</p>
发表于 2022-07-17 02:45:17 回复(0)