首页 / PYTHON / python 深浅拷贝
python 深浅拷贝
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python 深浅拷贝,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4185字,纯文字阅读大概需要6分钟。
内容图文
![python 深浅拷贝](/upload/InfoBanner/zyjiaocheng/600/5c9a9b94be3c4829baad7d16693a7f6b.jpg)
逐位比较,如果第一位两个比较可以得出结果,那么后面的也不会继续比较了
>>> 'baa' < 'abb'
False
0000 0000 八位的数 最大能是多少(考虑符号的话) 0 ~ 127
0000 0000 | 0000 0000 | 0000 0000| 0000 0000 | 0000 0000 | 0000 0000 | 0000 0000| 0000 0000 |
不考虑符号: 最高位64 2**64 - 1
考虑符号: 2**63 - 1
分支语句:
and or
>>> a = 3
>>> b = 4
>>> c = ( a < b and a or b )
>>> c
3
如果a<b成立,那么结果是a,反之是b
Guido
>>> c = a if a < b else b
>>> c
3
如果a<b成立,那么结果为a,否则结果是b
if 条件语句:
执行代码
条件语句 必须是一个可以用bool值判断的
非空非0
空或0
>>> if a == 1:
... print('a确实是等于1')
...
输出结果:a确实是等于1
>>> if a != 1:
... print('a确实是不等于1')
...
没有输出
>>> if a == 1:
... print('a == 1')
... else: #把所有之前判断条件没有判断到的地方 这里都做了判断
... print('a != 1')
之前的条件都没有满足 那么else绝对会执行
>>> if a == 1:
... print('a == 1')
... elif a == 2:
... print('a == 2')
... elif a == 3:
... print('a == 3')
... else:
... print('a不等于123')
...
elif 用来细化条件判断
else后不加条件语句
while循环
循环:和女朋友分分合合 就是重复的做一些事情
while 条件语句:
重复要做的事情
条件语句这里 也是可用bool表示的
死循环 ctrl+c
>>> sum = 0
>>> while mylist:
... sum += mylist[0] #求和
... mylist = mylist[1:] #这个地方我们切片 ,重新赋值
...
>>> sum
10
>>> mylist = [1,2,3,4]
>>> mylist = mylist[1:]
>>> mylist
[2, 3, 4]
for循环:
主要用来访问序列和可迭代的数据对象 [1,2,3,4,5]
序列:列表,字符串,元组
for var in mystr:
print(var)
var变量名 从 序列mystr中一次次取值 ,
>>> mylist = [1,2,3,4]
>>> for i in mylist:
... print(i)
...
1
2
3
4
for else:
for var in mylist:
print(var)
else:
print(‘123’)
如果说你的循环正常结束,那么就会执行else里的语句
>>> for var in mylist:
... print(var)
... else:
... print('循环正常结束了')
...
1
2
3
4
>>> while mylist:
... print(mylist[0])
... mylist = mylist[1:]
... else:
... print('循环正常结束')
...
1
2
3
4
循环正常结束
break语句:
break语句用来终止循环语句,如果是用在嵌套循环中,break语句将停止执行最深层次的循环,并开始执行下一行代码
continue:
该语句跳出本次循环,跳过这次循环剩下的语句,进行下一轮循环,
>>> for var in mylist:
... if var == 3:
... break
... print(var)
... else:
... print('结束了')
...
1
2
>>> for var in mylist:
... if var == 3:
... continue
... print(var)
... else:
... print('end')
...
1
2
4
end
在使用continue语句跳过本次循环的时候,else语句还会正常执行
>>> for var in mylist:
... print('------------')
... print('外层循环的打印:',var)
... for var in mylist1:
... print('内层循环的打印:',var)
...
输出结果:
------------
外层循环的打印: 1
内层循环的打印: a
内层循环的打印: b
内层循环的打印: c
------------
外层循环的打印: 2
内层循环的打印: a
内层循环的打印: b
内层循环的打印: c
------------
外层循环的打印: 3
内层循环的打印: a
内层循环的打印: b
内层循环的打印: c
首先进行外层循环,然后向下会执行到内层循环,内层循环执行完之后,才能继续进行接下来的外层循环
深浅拷贝:
深拷贝和浅拷贝,python中一切皆对象,像数字,字符串,元祖,如果在内存中存储了这些元素,那么这块内存中的值是不可以被修改的,但是还存在一些可变对象,比如列表和字典,他们所占有的内存空间是可以修改的,有因为python中使用的是引用计数去节省内存。
引用:
>>> mylist
[1, 2, 3]
>>> mylist1 = mylist
>>> id(mylist1)
139642552222216
>>> id(mylist)
139642552222216
>>> mylist1[0] = 'a'
>>> mylist
['a', 2, 3]
>>> mylist1
['a', 2, 3]
拷贝:
>>> id(mylist)
139642552222216
>>> id(mylist1)
139642597865032
>>> mylist[0] = 1
>>> mylist1
['a', 2, 3]
>>> mylist
[1, 2, 3]
当你使用切片操作拷贝的时候,虽然我们可以修改外层列表,而且不影响其他列表,但是内层的子列表被修改的时候,却又都受到了影响
>>> mylist1 = mylist[:]
>>> mylist1
[1, 2, 3, ['a', 'b']]
>>> mylist
[1, 2, 3, ['a', 'b']]
>>> mylist[-1][0] = 1
>>> mylist
[1, 2, 3, [1, 'b']]
>>> mylist1
[1, 2, 3, [1, 'b']]
>>> mylist[0] = 'a'
>>> mylist
['a', 2, 3, [1, 'b']]
>>> mylist1
[1, 2, 3, [1, 'b']]
浅拷贝的方式:
浅拷贝 不会拷贝数据中的子对象
import copy
切片,copy()
深拷贝:
深拷贝 会拷贝数据中的子对象
import copy
copy.deepcopy()
拷贝构造器
a = A()
b = a #拷贝构造
拷贝构造器 浅拷贝
内容总结
以上是互联网集市为您收集整理的python 深浅拷贝全部内容,希望文章能够帮你解决python 深浅拷贝所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。