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

     

    拷贝构造器 浅拷贝

  • 相关阅读:
    BNUOJ 12756 Social Holidaying(二分匹配)
    HDU 1114 Piggy-Bank(完全背包)
    HDU 2844 Coins (多重背包)
    HDU 2602 Bone Collector(01背包)
    HDU 1171 Big Event in HDU(01背包)
    HDU 2571 命运 (入门dp)
    HDU 1069 Monkey and Banana(最长递减子序列)
    HDU 1160 FatMouse's Speed (最长上升子序列)
    HDU 2594 KMP
    POJ 3783 Balls --扔鸡蛋问题 经典DP
  • 原文地址:https://www.cnblogs.com/waterr/p/14502196.html
Copyright © 2011-2022 走看看