zoukankan      html  css  js  c++  java
  • Python入门3(赋值)

    微信公众号关注我,更多python知识告诉你!

     

    【一:*,-1的作用】

    给大家两个例子:

    1 a,b,c,d='spam'
    2 print(a)
    3 print(b)
    4 print(c)
    5 print(d)
    6 a,*b='spam'
    7 print(a)
    8 print(b)

    上面这个例子是*号作用的最就简单的例子,要区别于C语言中的指针。第六行语句,a赋的是s,b赋的是pam

    1 seq='computer'
    2 *a,b=seq
    3 print(a)
    4 print(b)
    5 c,d=seq[:-1],seq[-1]
    6 print(a)
    7 print(b)

    上面是-1作用的例子,大家可以自己体会

    注意:如果有多个带星号的名称,或者如果值少了而没有带星号的名称,以及如果带星号的名称自身没有编写到一个列表中,都将会引发错误

    【二:序列赋值】

    1 a=1
    2 b=2
    3 a,b=b,a
    4 print(a)
    5 print(b)

    在这里,右侧的原组会自动记住先前的变量值

    【三:for循环】

    1 L=[1,2,3,4]
    2 M=[1,2,3,4]
    3 while L:
    4     front,L=L[0],L[1:]
    5     print(front,L)
    6     
    7 while M:
    8     front,*M=M
    9     print(front,M)

    由例子可以看出,上下两段代码的结果是一样的,这就是*的作用

    1 for all in [(1,2,3,4),(5,6,7,8)]:
    2     a,b,c=all[0],all[1:3],all[3]
    3     print(a,b,c)

    【四:append】

    1 a=b=[]
    2 b.append(42)
    3 print(a,b)
    4 
    5 a=[]
    6 b=[]
    7 b.append(42)
    8 print(a,b)

    第一段代码,因为a和b引用相同的对象,通过b在原处附加值上去,而我们通过a也会看到相同的效果。第二段代码则有不同的效果。只有append有这个功能

    【五:强赋值语句】

    强赋值语句类似与C语言中的x+=x,y+=y,但要注意的是Python中没有x++这样的运算符

    1 s='spam'
    2 s+='SPAM'
    3 print(s)

    当强赋值语句用于字符串时,增强形式会改为执行合并运算

    强赋值语句的优点:

    1、左侧只需计算一次,在x+=x中,x可以是复杂的对象表达式。在增强形式中,则只需计算一次。然而,在完整形式x=x+y中,x出现两次,必须执行两次。因此,增强赋值语句通常执行更快。

    2.当我们使用增强赋值语句时,Python会自动调用较快的方法

    1 a=[1,2,3]
    2 b=[1,2,3]
    3 a.extend([4,5])
    4 b=b+[4,5]
    5 print(a)
    6 print(b)

    在上面这个例子中,上下两段代码的结果是一样的,但是.extend方法更快一点。然后我们再来看下面这个例子

    1 a=[1,2,3]
    2 a+=[4,5]
    3 print(a)

    这个例子调用的就是更快速的.extend方法,虽然表面上看不出,但Python内部就是调用更高效的方法的

    注意:

    1 L=[1,2]
    2 M=L
    3 L=L+[3,4]
    4 print(M,L)
    5 
    6 L=[1,2]
    7 M=L
    8 L+=[3,4]
    9 print(M,L)

    以上两个例子的差异大家自己体会一下

    +=能对列表做原处修改

    1 M=L=[1,2]
    2 L.append(3)
    3 print(M,L)
    4 
    5 M=L=[1,2]
    6 L=L+[3]
    7 print(M,L)

    再次感受一下append的作用

  • 相关阅读:
    ubuntu: 环境搭建
    [转]unable to resolve superclass of 的奇怪问题和一种解决方法!
    [转]如何利用ndk-stack工具查看so库的调用堆栈【代码示例】?
    [转]TCP、UDP数据包大小的确定
    [转]教大家如何打造使用Tcpview(tcp查看器
    [转]帐号登录事件(事件编号与描述)
    [转]一个基于完成端口的TCP Server Framework,浅析IOCP
    [转]宏的高级使用--##,__VA_ARGS__, __FILE__, __FUNCTION__等
    mysql5.5 Replication 主从同步
    [转]adb pull Permission denied及no such file错误
  • 原文地址:https://www.cnblogs.com/yuanninesuns/p/7722648.html
Copyright © 2011-2022 走看看