|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- list1 = ["1","2","3","4"]
- list2 = list1
- list1.append('5')
- list2.append('6')
- print(list1)
- print(list2)
复制代码
这段代码得到的两个列表是相同的,都是['1', '2', '3', '4', '5', '6']。我的问题是既然list2 = list1表示将 list1 这个变量赋值给 list2,为什么增加 list2 列表中的元素也会改变 list1?
本帖最后由 Twilight6 于 2021-6-8 11:04 编辑
因为 list1、list2 这两个变量所指向的 id 即内存地址相同
你的 list1 = ["1","2","3","4"] 实际上是将列表 ["1","2","3","4"] 的内存地址赋值给 list1
而你 list2 = list1 此时也是将 列表 ["1","2","3","4"] 的内存地址赋值给 list2
所以 list1、list2 都指向这个地址的数据,只要列表 ["1","2","3","4"] 发生改变,指向这个内存地址的变量肯定随之改变
你后来的 int 这些是因为是不可变对象,Python 会将不可变变量相同的值指向同一内存地址,节省内存消耗,而不同的值肯定需要重新开辟内存
|
|