Python學習筆記(五)

數字

  • 處理數字對象的工具:

    表達式操作符 +,,>>,*,%等
    內置數學函數 pow,abs
    公用模塊 random,math等
  • 在列表後添加元素前,要首先初始花列表爲一個空列表.

  • Python在計算的過程中顯示計算的位數:
>>> number=3/7.0
>>> number
0.42857142857142855
>>> print number
0.428571428571
>>> '%e' % number
'4.285714e-01'
>>> '%2.2f' % number
'0.43'
>>> '%4.2f' % number
'0.43'
>>> repr(number)
'0.42857142857142855'
>>> str(number)
'0.428571428571'
  • “//Floor”除法能偶用在省略結果中的小數部分,知道剩下最小的能整除部分而不管他們的類型.
  • 位操作
>>> a=1 #0001
>>> a << 2  #左移兩位 0100
4
>>> a | 2   #二進制或 0011 (0001|0010)
3
>>> a & 1   #二進制與 0001 (0001&0001)
1
  • 複數運算
>>> 1j*1j
(-1+0j)
>>> 2+1j*4
(2+4j)
>>> 3+33j*4
(3+132j)
  • 集合:創建一個集合對象,將一個序列或其他的迭代對象傳遞給內置set函數.

    1. 集合並不包含位置順序,序列卻包含.
    2. 集合通過表達式操作符支持一般的數學集合運算.不能在一般序列上應用這些操作
>>> x=set('abcde')
>>> y=set('jklmn')
>>> x
set(['a', 'c', 'b', 'e', 'd'])
>>> y
set(['k', 'j', 'm', 'l', 'n'])
>>> 'a' in x
True
>>> x-y
set(['a', 'c', 'b', 'e', 'd'])
>>> x+y
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'set' and 'set'
>>> x | y
set(['a', 'c', 'b', 'e', 'd', 'k', 'j', 'm', 'l', 'n'])
>>> x&y
set([])
>>> 
  • 內置函數oct(I)hex()會將整數以八進制和十六進制數字符串的形式返回.%字符串表達式也會實現這樣的目標.
  • int(S,base?)函數能夠用來讓一個八進制和十六進制數的字符串轉換爲正常的整數(傳入以八和十六進制的數字).eval(S)函數也能夠用作這個目的.但是運行起來開銷會更大也會有安全問題.

動態類型

  • 在Python中,類型是在運行過程中自動決定的,而不是通過代碼聲明,沒有必要事先聲明變量.
  • 類型屬於對象,而不是變量.
  • 在Python中,類型屬於對象,而不是變量名.變量名只是引用對象而已.
  • 在Python中,對象的引用值在使用過程中逐個丟棄.每一次x被賦值給一個新的對象,Python都回收了對象的空間
  • 共享引用-多個變量名引用了同一個對象.
  • 在Python中,變量總是指向對象的指針,而不是可改變的內存區域的標籤:給一變量賦一個新的值,並不是替換了原始的對象,而是讓這個變量去引用完全不同的一個對象.實際的效果就是對一個變量賦值,僅僅會影響哪個被賦值的變量.
  • ==操作符,測試Python中用作相等的檢查.等同於”is操作符”.檢查對象的同一性.(is只是比較實現引用的指針.)
>>> a=['spam']
>>> b=a
>>> b[0]='shrubbery'
>>> print a
['shrubbery']
#改變的是這兩個變量共同引用(指向對象)的一部分,通過變量B在原處覆蓋了這個對象的一部分內容.
>>> a=['spam']
>>> b=a[:]
>>> b[0]='shrubbery'
>>> print a
['spam']
#由於分片表達式語句會在被賦值給B前創建一個拷貝,這次對B在原處賦值就不會有影響了.在第二個賦值語句後,就有了兩個擁有相同值的不同列表對象了.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章