Python運算符總結

1、簡介

Python中運算符分爲:html

  1. 算術運算符:主要用於兩個對象算數計算(加減乘除等運算)
  2. 比較(關係)運算符:用於兩個對象比較(判斷是否相等、大於等運算)
  3. 賦值運算符:用於對象的賦值,將運算符右邊的值(或計算結果)賦給運算符左邊。
  4. 邏輯運算符:用於邏輯運算(與或非等)。
  5. 位運算符: 對Python對象進行按照存儲的bit操做。
  6. 成員運算符:判斷一個對象是否包含另外一個對象。
  7. 身份運算符:判斷是否是引用自一個對象

2、運算符詳解

2.一、算術運算符

 

算數運算符python

描述python2.7

實例ide

+函數

加 - 兩個對象相加spa

假設變量: a=10b=20a + b 輸出結果 30code

>>> a = 10htm

>>> b = 15對象

>>> a + bip

25

>>> a = 'ni'

>>> b = 'hao'

>>> a + b

'nihao'

-

減 - 獲得負數或是一個數減去另外一個數

假設變量: a=10b=20a - b 輸出結果 -10

>>> a = 10

>>> b = 3

>>> a - b

7

*

乘 - 兩個數相乘或是返回一個被重複若干次的字符串

假設變量: a=10b=20a * b 輸出結果 200

>>> a = 2

>>> b = 10

>>> a * b

20

/

除 - x除以y

假設變量: a=10b=20,b / a 輸出結果 2

>>> a = 2

>>> b = 10

>>> b / a

5.0

%

取模 - 返回除法的餘數

假設變量: a=10b=20,b % a 輸出結果 0

>>> a = 2

>>> b = 10

>>> b % a

0

**

冪 - 返回x的y次冪

假設變量: a=10b=20,a**b 爲10的20次方, 輸出結果 100000000000000000000

>>> a = 2

>>> b = 10

>>> a ** b

1024

//

取整除 - 返回商的整數部分

假設變量: a=10b=209//2 輸出結果 4 , 9.0//2.0 輸出結果 4.0

>>> a = 2

>>> b = 10

>>> b // a

5


 

2.二、比較(關係)運算符

 

比較運算符

描述

實例

==

等於 - 比較對象是否相等

假設變量: a=10b=20,(a == b) 返回 False。

>>> a = 2

>>> b = 10

>>> a == b

False

!=

不等於 - 比較兩個對象是否不相等

假設變量: a=10b=20,(a != b) 返回 true.

>>> a = 2

>>> b = 10

>>> a != b

True

<>

不等於 - 比較兩個對象是否不相等

Python3.6中沒有這個操做符

>

大於 - 返回x是否大於y

假設變量: a=10b=20,(a > b) 返回 False。

>>> a = 2

>>> b = 10

>>> a > b

False

<

小於 - 返回x是否小於y。全部比較運算符返回1表示真,返回0表示假。這分別與特殊的變量True和False等價。注意,這些變量名的大寫。

假設變量: a=10b=20,(a < b) 返回 true。

>>> a = 2

>>> b = 10

>>> a < b

True

>=

大於等於 - 返回x是否大於等於y。

假設變量: a=10b=20,(a >= b) 返回 False。

>>> a = 10

>>> b = 10

>>> a >= b

True

<=

小於等於 - 返回x是否小於等於y。

假設變量: a=10b=20,(a <= b) 返回 true。

>>> a = 10

>>> b = 10

>>> a <= b

True


 

2.三、賦值運算符

 

賦值運算符

描述

實例

=

簡單的賦值運算符

假設變量: a=10b=20,c = a + b 將 a + b 的運算結果賦值爲 c

>>> a = 10

>>> a

10

>>> a = 10 + 5

>>> a

15

+=

加法賦值運算符

假設變量: a=10b=20,c += a 等效於 c = c + a

>>> a = 0

>>> a += 1

>>> a

1

>>> a += 10

>>> a

11

>>> a = 'a'

>>> a += 'b'

>>> a

'ab'

-=

減法賦值運算符

假設變量: a=10b=20,c -= a 等效於 c = c - a

>>> a = 10

>>> a -= 1

>>> a

9

*=

乘法賦值運算符

假設變量: a=10b=20,c *= a 等效於 c = c * a

>>> a = 2

>>> a *= 10

>>> a

20

>>> a = 'z'

>>> a *= 5

>>> a

'zzzzz'

/=

除法賦值運算符

假設變量: a=10b=20,c /= a 等效於 c = c / a

>>> a = 10

>>> a /= 2

>>> a

5.0

%=

取模賦值運算符

c %= a 等效於 c = c % a

>>> a = 10

>>> a %= 3

>>> a

1

**=

冪賦值運算符

c **= a 等效於 c = c ** a

>>> a = 2

>>> a **= 10

>>> a

1024

//=

取整除賦值運算符

c //= a 等效於 c = c // a

>>> a = 11

>>> a //= 2

>>> a

5


 

2.四、邏輯運算符

 

邏輯運算符

邏輯表達式

描述

實例

and

x and y

布爾"與" - 若是 x 爲 False,x and y 返回 False,不然它返回 y 的計算值。

>>> a = 0

>>> b = 1

>>> a and b

0

>>> a = 'a'

>>> a and b

1

(a and b) 返回 20。

or

x or y

布爾"或" - 若是 x 是非 0,它返回 x 的值,不然它返回 y 的計算值。

>>> a = 0

>>> b = 1

>>> a or b

1

(a or b) 返回 10。

not

not x

布爾"非" - 若是 x 爲 True,返回 False 。若是 x 爲 False,它返回 True。

>>> a = 0

>>> not a

True

not(a and b) 返回 False


 

2.五、位運算符

 

位運算符

描述

實例

&

按位與運算符:參與運算的兩個值,若是兩個相應位都爲1,則該位的結果爲1,不然爲0

(a & b) 輸出結果 12 ,二進制解釋: 0000 1100

>>> a=1

>>> b=2

>>> a&b

0

>>> b=3

>>> a&b

1

|

按位或運算符:只要對應的二個二進位有一個爲1時,結果位就爲1。

(a | b) 輸出結果 61 ,二進制解釋: 0011 1101

>>> a = 1

>>> b = 2

>>> a|b

3

^

按位異或運算符:當兩對應的二進位相異時,結果爲1

(a ^ b) 輸出結果 49 ,二進制解釋: 0011 0001

>>> a = 1

>>> b = 3

>>> a^b

2

~

按位取反運算符:對數據的每一個二進制位取反,即把1變爲0,把0變爲1

(~a ) 輸出結果 -61 ,二進制解釋: 1100 0011, 在一個有符號二進制數的補碼形式。

>>> a = 0

>>> ~a

-1

>>> a = 1

>>> ~a

-2

<<

左移動運算符:運算數的各二進位所有左移若干位,由"<<"右邊的數指定移動的位數,高位丟棄,低位補0。

a=2,a << 2 輸出結果 8 ,二進制解釋: 0000 0010向右移兩位,0000 0100

>>> a = 2

>>> a << 2

8

>>

右移動運算符:把">>"左邊的運算數的各二進位所有右移若干位,">>"右邊的數指定移動的位數

a >> 2 輸出結果 15 ,二進制解釋: 0000 1111

>>> a = 16

>>> a >> 1

8

 

2.六、成員運算符

 

成員運算符

描述

實例

in

若是在指定的序列中找到值返回 True,不然返回 False。

x 在 y 序列中 , 若是 x 在 y 序列中返回 True。

>>> a = 'a'

>>> b = 'cba'

>>> a in b

True

>>> b = list(b)

>>> b

['c', 'b', 'a']

>>> a in b

True

not in

若是在指定的序列中沒有找到值返回 True,不然返回 False。

x 不在 y 序列中 , 若是 x 不在 y 序列中返回 True。

>>> a = 'a'

>>> b = 'cba'

>>> a not in b

False

>>> b = list(b)

>>> b

['c', 'b', 'a']

>>> a not in b

False

 

 

2.七、身份運算符

 

身份運算符

描述

實例

is

is是判斷兩個標識符是否是引用自一個對象

x is y, 若是 id(x) 等於 id(y) , is 返回結果 1

>>> a = 'a'

>>> b = 'b'

>>> a is b

False

>>> b = 'a'

>>> a is b

True

>>> id(a)

2422111596248

>>> id(b)

2422111596248

is not

is not是判斷兩個標識符是否是引用自不一樣對象

x is not y, 若是 id(x) 不等於 id(y). is not 返回結果 1

>>> a = 'a'

>>> b = 'b'

>>> a is not b

True

>>> b = 'a'

>>> a is b

False

>>> id(a)

2422111596248

>>> id(b)

2422111596248

 

3、重要運算符說明

3.一、join和符號」+「區別

    建議:字符串拼接操做盡可能多用join,而減小用」+「

    join操做時會先計算字符操做所用到的空間總和大小,而後申請內存。而後進行字符串鏈接操做。因此join的時間複雜的近似O(n)。

    +操做符鏈接操做符時,因爲字符串是不可變對象,因此多個字符串拼接操做時從前向後的依此計算,用前一次的計算結果再和下一個字符串拼接。因此每次操做都須要申請一塊新的內存。舉例:S1+S2+S3+…Sn,實際過程是:一、先申請一塊內存;二、將S一、S2複製到這塊內存中(這樣這塊內存就是S1+S2);三、繼續第一步申請內存;四、繼續把第二步的內存內容和S3複製到第三步申請的內存。而後重複第一步到第二步至計算到Sn。因此操做符」+「的時間複雜的近似O(n^2)

    對於不一樣個數字符串拼接操做時join和+所用時間對比(python2.7環境運行結果):

    連接字符串數量

    join操做消耗時間

    +操做消耗時間

    3

    0.011083841323852539

    0.02231597900390625

    10

    0.014094829559326172

    0.05936312675476074

    100

    0.1445930004119873

    0.6129770278930664

    1000

    1.340691089630127

    6.07816481590271

    10000

    13.942554950714111

    61.60126209259033

    參考計算運算上面時間的代碼:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import timeit
    
    strlist = ["it is a value string will not keep in memorty" for n in range(100000)]
    
    def join_test():
        return ''.join(strlist)
    
    def plus_test():
        result = ''
        for i,v in enumerate(strlist):
            result = result + v
        return result
    
    if __name__ == '__main__':
        x = [3,10,100,1000,10000]
        jointd = {3:0,10:0,100:0,1000:0,10000:0}
        plustd = {3:0,10:0,100:0,1000:0,10000:0}
        for i in x:
            jointimer = timeit.Timer("join_test()","from __main__ import join_test")
            jointd[i] = jointimer.timeit(number=i)
            plustimer = timeit.Timer("plus_test()","from __main__ import plus_test")
            plustd[i] = plustimer.timeit(number=i)
        print ('join use time:\n',jointd)
        print ('plus use time:\n', plustd)

3.二、is和」==「區別

    區別:

    is是比較對象是否相同(is表示對象標識符即object identity),即用id()函數查看的地址是否相同,若是相同則返回True,若是不一樣則返回False。is不能被重載。

    」==「是比較兩個對象的值是否相等,此操做符內部調用的是」__eq__()「方法。因此a==b等效於a.__eq__(b),因此」==「能夠被重載。

相關文章
相關標籤/搜索