• python中的不可变类型

    列举:数值,字符串、元组、字节串

    • 数值及字符串“可变”'的假象
num = 123
mystr = 'abc'
print(id(num), num)
print(id(mystr), mystr)
num = 456
mystr = 'def'
print('修改后...')
print(id(num), num)
print(id(mystr), mystr) # 结果:
140704113688128 123
1853358409744 abc
修改...
1853359869712 456
1853361326544 def

    表面上是对变量的修改,其实质是重新建立了对象,将引用赋给了变量,原来的对象被系统回收。

  • python中的可变类型

    列举: 列表、字典、字节数组、对象

  • 浅拷贝

    浅拷贝只拷贝可变类型的引用,在拷贝后的对象中对可变类型的修改会影响到原对象。

    有几种方式实现:

    1. 完全切片操作

    2. 利用系统函数list(), dict()

    3. 利用copy模块的copy函数

ll = ['xiao', ['china', 32]]
la = copy(ll)
lb = copy(ll)
print(id(ll), ll)
print(id(la), la)
print(id(lb), lb)
print('change...')
la[0] = 'zhang'
la[1][0] = 'usa'
la[1][1] = 40
print(id(ll), ll)
print(id(la), la)
print(id(lb), lb) # 结果:
3006259174856 ['xiao', ['china', 32]]
3006259174536 ['xiao', ['china', 32]]
3006259174600 ['xiao', ['china', 32]]
change...
3006259174856 ['xiao', ['usa', 40]]
3006259174536 ['zhang', ['usa', 40]]
3006259174600 ['xiao', ['usa', 40]]
  • 深拷贝

  对比浅拷贝,深拷贝利用copy模块的deepcopy()函数会完全拷贝出独立的对象来。

ll = ['xiao', ['china', 32]]
la = deepcopy(ll)
lb = deepcopy(ll)
print(id(ll), ll)
print(id(la), la)
print(id(lb), lb)
print('change...')
la[0] = 'zhang'
la[1][0] = 'usa'
la[1][1] = 40
lb[0] = 'wang'
lb[1][0] = 'japan'
lb[1][1] = 49
print(id(ll), ll)
print(id(la), la)
print(id(lb), lb) # 结果:
1957762145864 ['xiao', ['china', 32]]
1957762145544 ['xiao', ['china', 32]]
1957762145672 ['xiao', ['china', 32]]
change...
1957762145864 ['xiao', ['china', 32]]
1957762145544 ['zhang', ['usa', 40]]
1957762145672 ['wang', ['japan', 49]]
  • 意外发现

    元组中的列表不可以修改吗?

tt = (12, 33, [44, 55, 66])
print(tt)
# 修改
tt[2][0] = 0
print(tt) # 结果:
(12, 33, [44, 55, 66])
(12, 33, [0, 55, 66]) ## 元组中的元素tt[2]不可更改为其他内容,单列表中的元素可以随意修改。

    列表中的元组可以修改吗?

dd = [1, 2, 3, 4, (7, 8, 9)]
print(dd)
dd[4] = 0
print(dd) # 结果:
[1, 2, 3, 4, (7, 8, 9)]
[1, 2, 3, 4, 0] ## 列表中元组内容不可修改,但dd[4]的值可修改。

最新文章

  1. Solr5.5.1 IK中文分词配置与使用
  2. SQL Agent服务无法启动如何破
  3. 一个java的Profile工具
  4. Oracle计算时间函数(对时间的加减numtodsinterval、numtoyminterval) (转)
  5. 我与solr(六)--solr6.0配置中文分词器IK Analyzer
  6. A. Puzzles CodeForces Round #196 (Div.2)
  7. DOM_节点层次
  8. 3月3日(2) Search Insert Position
  9. 如果将synthesize省略,语义特性声明为assign retain copy时,自己实现setter和getter方法
  10. javaScript常用方法整合(项目中用到过的)
  11. 创建实体数据模型需要注意的,不要选单复数形式,否则AddObject出问题
  12. typecho博客出404页面修改方法
  13. javascript高级知识分析——作为对象的函数
  14. nginx读取图片没有权限
  15. UNIX网络编程——客户/服务器程序设计示范(四)
  16. python基础成长之路三
  17. CF835F Roads in the Kingdom/UOJ126 NOI2013 快餐店 树的直径
  18. vue proxyTable 跨域问题。
  19. [LeetCode&Python] Problem 350. Intersection of Two Arrays II
  20. 关于内核中spinlock的一些个人理解 【转】

热门文章

  1. [AGC001E]BBQ Hard 组合数学
  2. ueditor编辑器中从word中复制带图片的信息的操作演示
  3. 一道装呀(状压)DP
  4. [USACO16JAN]愤怒的奶牛Angry Cows (单调队列优化dp)
  5. Android逆向之旅---解析编译之后的AndroidManifest文件格式
  6. brew安装指定版本的软件
  7. drawArc
  8. java微信扫码支付Native(模式二)
  9. php面试专题---11、开发环境及配置考点
  10. leetcode 118. 杨辉三角(python)