python中列表的赋值

 最近刚刚学习python语言,发现python中列表的赋值很像C++中数组的赋值方式,不过各方面都比C++方便很多啊。

 

输出结果:

1
1
=========================
100
100

 

这样的简单赋值 其实是将C和D指向同一个列表。很像C/C++真的数组指针赋值哈。

输出结果:

1
1
=========================
100
100

 

也许python列表赋值和C语言中的指针一样,指向同一个内存地址吧。

 

但是python中可以用分片的方式。复制出一份新的列表的副本,而不是指向同一个列表

 

输出结果:

1
1
=========================
1
100

 

可以看出,列表e和f完全是两个列表。

 

列表中有很多操作,比如sort之类的,都是不返回新副本的。所以改变原来的列表,并不是我们希望的。

 

 

参考资源链接:[Python列表和数组赋值及浅深拷贝实例详解](https://wenku.youkuaiyun.com/doc/7tzp70h3eg?utm_source=wenku_answer2doc_content) 在Python中,理解列表赋值、浅拷贝与深拷贝的区别对于管理数据结构及其内存表现至关重要。以下是对这三种概念的详细解释和示例代码。 1. 列表赋值(对象引用): 当我们将一个列表赋值给另一个变量时,实际上是在创建一个指向同一对象的引用。这意味着,任何对原列表的修改都会反映在新变量上。 示例代码: ```python a = [1, 2, 3] b = a # 赋值操作 print(id(a), id(b)) # 输出两个变量的内存地址,应相同 a[0] = 4 # 修改原列表 print(a, b) # 输出修改后的列表,两者相同 ``` 2. 浅拷贝(Shallow Copy): 浅拷贝创建一个新的列表对象,但它里面的元素还是原对象中元素的引用。对于不可变类型(如整数、字符串)来说,浅拷贝和赋值没有区别,但对于可变类型(如列表),浅拷贝可以创建一个新的列表对象,但列表内部的可变类型元素仍然是原对象的引用。 示例代码: ```python import copy a = [1, 2, [3, 4]] b = copy.copy(a) # 浅拷贝 print(id(a), id(b)) # 输出两个变量的内存地址,应不同 a[2][0] = 5 # 修改嵌套列表 print(a, b) # 输出修改后的列表,两者内部嵌套列表相同 ``` 3. 深拷贝(Deep Copy): 深拷贝不仅会复制列表本身,还会递归地复制列表中所有可变类型的元素,从而创建一个完全独立的新对象。这意味着,无论是列表还是列表内的元素,所有的复制都是独立的。 示例代码: ```python import copy a = [1, 2, [3, 4]] b = copy.deepcopy(a) # 深拷贝 print(id(a), id(b)) # 输出两个变量的内存地址,应不同 a[2][0] = 5 # 修改嵌套列表 print(a, b) # 输出修改后的列表,两者完全独立 ``` 通过上述示例和解释,可以看出赋值、浅拷贝和深拷贝在内存管理和数据结构操作中的不同作用。选择使用哪一种取决于你是否需要在新的数据结构中保持原始数据的独立性。 掌握这些概念对于进行高效且正确的数据操作至关重要。为了深入理解和实践这些概念,你可以参考《Python列表和数组赋值及浅深拷贝实例详解》这本书,它提供了丰富的实例和深入的讲解,有助于你更全面地掌握列表和数组在Python中的使用技巧。 参考资源链接:[Python列表和数组赋值及浅深拷贝实例详解](https://wenku.youkuaiyun.com/doc/7tzp70h3eg?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值