zoukankan      html  css  js  c++  java
  • python 深浅拷贝

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

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

     

    拷贝构造器 浅拷贝

  • 相关阅读:
    【读书笔记】MSDN 上关于加密解密的一个例子
    【读书笔记】创建泛型编程类 由链表而深入
    HDFS数据加密空间Encryption zone
    各种数据库的连接方法
    Java基础5
    Java基础4
    Java基础2
    博客优化、收录、RSS技巧
    Java基础3
    Java基础8
  • 原文地址:https://www.cnblogs.com/waterr/p/14502196.html
Copyright © 2011-2022 走看看