ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python 深浅拷贝

2021-03-08 21:02:13  阅读:166  来源: 互联网

标签:... mylist python var 循环 深浅 print 0000 拷贝


逐位比较,如果第一位两个比较可以得出结果,那么后面的也不会继续比较了

>>> '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 #拷贝构造

 

拷贝构造器 浅拷贝

标签:...,mylist,python,var,循环,深浅,print,0000,拷贝
来源: https://www.cnblogs.com/waterr/p/14502196.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有