首页 > 试题广场 >

对于下列Python代码,描述正确的有:

[不定项选择题]
对于下列Python代码,描述正确的有:
foo = [1,2]
foo1 = foo
foo.append(3)

  • foo 值为[1,2]
  • foo 值为[1,2,3]
  • foo1 值为[1,2]
  • foo1 值为[1,2,3]
可变对象为引用传递,不可变对象为值传递。
发表于 2019-05-15 16:38:25 回复(3)
第二行foo1 = foo,是将fool的地址赋予给fool,即foo与foo1指向内存中同一地址。
第三行当执行foo.append时,因为python中列表的值是可以变化的。所以就在原来的存放foo的内存地址改变了foo的值,由最初的[1, 2]变为[1, 2, 3]由于foo1和foo 是指向同一地址空间的索引,所以当foo内存地址所存储的值被改变时,打印foo1时,foo1的值也变化了。

编辑于 2018-10-15 16:10:29 回复(0)
题目应该是foo1=foo 这样两者指的是同一个数据对象,即同一个内存地址,所以一动都动。这是深拷贝和浅拷贝的问题。
发表于 2018-06-14 19:59:05 回复(3)
浅拷贝:拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象;改变原始对象中为不可变类型的元素的值,不会响拷贝对象。 深拷贝,除了顶层拷贝,还对子元素也进行了拷贝。经过深拷贝后,原始对象和拷贝对象所有的可变元素地址都没有相同的了。 =赋值属于浅拷贝。
发表于 2020-04-05 10:44:30 回复(0)
我刚接触python,把第2行代码理解成了赋值语句,所以错了
发表于 2018-11-29 23:39:02 回复(0)
两者指的是同一个数据对象,即同一个内存地址,所以一动都动。这是深拷贝和浅拷贝的问题。
发表于 2018-11-30 14:35:56 回复(0)
深拷贝和浅拷贝是针对对象和数组等引用数据类型进行的复制操作。 浅拷贝只是将原始数据的引用复制一份给新的变量,即新旧对象还是共享同一块内存。而深拷贝则会创建一个新的对象并将原始数据的所有属性递归复制到新对象中,这样新对象就有了自己的一份独立数据,不再与原始数据共享。因此,在修改新对象时,不会影响原始数据以及其他引用该数据的变量。 等号 " = " 是赋值操作符,它将一个变量的值复制给另一个变量。赋值操作实施的是浅拷贝,即将原始数据的引用复制一份给新的变量,这意味着新旧变量共享同一块内存,对其中任何一个变量进行修改都会影响到另一个变量。因此,等号 " = " 不是深拷贝操作。
发表于 2023-04-08 11:48:59 回复(0)
列表为可变对象
可变对象为引用传递,不可变对象为值传递;
可变对象是将fool的地址赋予给fool,即foo与foo1指向内存中同一地址。
发表于 2021-12-27 23:46:51 回复(0)
此题用到python中浅拷贝和深拷贝 foo=[1,2] foo1=foo foo.append(3) # print(foo.append(3))#错误写法! print(foo) print(foo1) #运行的结果; # None # [1, 2, 3] # [1, 2, 3] python中浅拷贝和深拷贝的区别如下: 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。(一改都不变) 2. copy.deepcopy 深拷贝 拷贝对象及其子对象 (一改全改) 另外一个例子 import copy a=[3] b1=copy.copy(a) #浅拷贝 b2=copy.deepcopy(a) #深拷贝 b3=a.copy() b4=a[:] b5=a a.append(4) print(a) # [3, 4] print(b1) # [3] print(b2) # [3] print(b3) # [3] print(b4) # [3] print(b5) # [3, 4]
编辑于 2021-03-20 16:33:00 回复(0)
这题题目错了吧
发表于 2018-06-13 22:20:35 回复(5)

等号后边的值赋给前边,相当于把后边的数据地址赋给了前边,两个值对应了一个地址,其中一个改变,另一个也改变

发表于 2020-02-14 22:14:27 回复(0)
foo1=foo.copy() 则此时foo1=[1,2] 深浅拷贝
发表于 2019-12-05 15:40:55 回复(0)
a = b 表示深浅拷贝。相当于a = copy.copy(b),a和b指向的是同一块内存地址。

发表于 2018-12-16 11:35:49 回复(0)
等,copy是浅拷贝 deep深拷贝 foo 和foo1指向的是同一地址
发表于 2022-09-25 12:05:46 回复(0)
直接指向内存
发表于 2021-04-19 20:05:48 回复(0)
foo 和foo1指向的是同一地址
发表于 2020-08-27 18:30:57 回复(0)
foo = [1,2]
foo1 = foo
列表赋值,内存地址相同,操作时,其实是一个列表
发表于 2023-07-18 16:40:23 回复(0)
foo1=foo同一个数据对象,也就是同一个内存地址,因此foo更新foo1同理。可变对象为引用传递,不可变对象为值传递。
发表于 2023-07-13 12:20:10 回复(0)
链接:https://www.nowcoder.com/questionTerminal/adb4f0da002d460eb2c334bb984fc6c9?
来源:牛客网
浅拷贝:拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象;改变原始对象中为不可变类型的元素的值,不会响拷贝对象。 深拷贝,除了顶层拷贝,还对子元素也进行了拷贝。经过深拷贝后,原始对象和拷贝对象所有的可变元素地址都没有相同的了。 =赋值属于浅拷贝。
发表于 2023-03-05 12:50:18 回复(0)
这道题错了,foo1 = foo是地址引用,元素值变了都会变
发表于 2022-09-18 17:44:54 回复(0)