首页 > 试题广场 >

以下代码输出为: list1 = {'1':1,'2':2}

[单选题]
以下代码输出为:
list1 = {'1':1,'2':2}
list2 = list1
list1['1'] = 5
sum = list1['1'] + list2['1']
print(sum)

  • 1
  • 2
  • 7
  • 10
b = a: 赋值引用,a 和 b 都指向同一个对象。
list1 和 list2 指向的是同一块内存空间
list1['1']=5  ------>     改变了这一块内存空间中'1'的value值
执行这一步后内存空间存储的数据变为:{'1': 5, '2': 2}
因此 sum = list1['1']+list2['1']=5+5=10
发表于 2019-10-09 20:36:02 回复(4)
赋值,在原有对象的引用计数上+1,所以原有对象变,它也跟着变,就像贴标签,把两个标签贴到了一个对象上。
这和深浅拷贝还是不一样的,深浅拷贝的均开辟新内存,赋值不会开辟新的内存地址。可以用id()进行测试
编辑于 2019-11-04 09:46:43 回复(0)
浅拷贝和深拷贝
可变类型set,list,dict进行浅拷贝后,拷贝后的也会受影响。
发表于 2019-08-05 15:43:19 回复(6)
python2,3: 列表和字典直接赋值是浅拷贝,浅拷贝情况下对其中一个的改变都会相应改变另一个
发表于 2019-08-07 10:44:32 回复(2)

list1和list2都是引用 指向同一片内存地址

发表于 2019-06-17 10:43:44 回复(0)
list2 = list1属于浅复制,字典还是那个字典,只是名字变了,都指向的是同一个字典,所以当一个字典变了,另一个字典也会随之改变;
想要list1和list2成为只是键值一样、名字不一样且相互没有关联的两个字典,需要使用list2 = list1.copy()这类深复制,复制后,list1就与list2一模一样的,但是这绝对就是完全不同的2个字典,各自变化都不再互相影响。
发表于 2022-02-07 09:36:14 回复(0)
我居然觉得是6
发表于 2021-06-25 15:27:56 回复(1)
列表和字典赋值是浅拷贝,赋值另外一个也受影响
发表于 2019-09-01 16:00:30 回复(0)
<p>List是通过指针指向地址来存储查询数据的,赋值以后两个List指向同一个地址,如果后一个List值发生变化,则前一个List值也发生变化。</p>
发表于 2020-09-25 09:50:04 回复(0)

list1和list2在内存中指向同一内存地址,改变其中一个,另一个也随之改变,选D

发表于 2019-09-15 15:40:49 回复(0)
这么说吧,python中的set dict list 都属于引用类型,如果直接赋值的话,二者引用的是同一个对象,而基本数据类型都是值拷贝,同理java
发表于 2022-06-05 18:11:35 回复(0)
字典属于可变数据类型,当通过键值对修改值之后,键对应的值发生改变
赋值语句不会造成前后数据的差异,深浅拷贝则会影响数据(对于可变数据类型)
发表于 2020-12-16 15:23:43 回复(0)

赋值会一起变


发表于 2019-08-30 11:10:03 回复(0)
赋值的效果类似于浅拷贝,赋值是引用地址的意思,原地址变化复制后的也会变化
发表于 2022-07-11 10:09:51 回复(0)

10

发表于 2020-02-28 22:51:39 回复(0)
c
发表于 2019-11-13 08:57:49 回复(0)

两个变量都是指向同一个对象的


发表于 2019-10-12 18:31:33 回复(0)
字典的键能改变吗?
发表于 2019-08-17 14:29:19 回复(0)
发表于 2022-10-26 09:17:00 回复(0)
list1 与list2 指向同一个内存地址,所以修改会互相影响
发表于 2022-04-28 12:50:23 回复(0)