Python要點複習

Python要點複習

1. 數據類型概覽

Number/String/List/Tuple/Set/Dictionaryhtml

  • 是否可變:
    • 不可變數據類型:Number/String/Tuple
    • 可變數據類型:List/Set/Dictionary
  • 數字類型
    • int整數(只有一種整數類型)
    • bool類型:True/False
    • float浮點數
    • complex複數

2. 運算符

  • 位運算符:& | ~ ^
  • 邏輯運算符:and or not
  • 成員運算符:
    • in:若是在指定的序列中找到值則返回True,不然返回false
    • not in:語義與in相反
  • 身份運算符:
    • is:判斷兩個變量是否引用自同一個對象。x is y,若是xy引用的是一個相同對象,則返回True,不然返回False
    • is not:語義相反
    • is==的區別:is判斷兩個變量是否引用同一個對象,==判斷兩個變量的值是否相等
  • 刪除運算符:del語句刪除對對象的引用

3. 字符串

  • 單引號'和雙引號"效果徹底相同
  • 沒有單獨的字符類型,字符就是長度爲1的字符串
  • 字符串是不可變常量
  • 字符串可使用+串聯在一塊兒,用*運算符重複
  • 字符串截取(切片)的語法格式[begin : end](前閉後開區間)
  • 字符串的索引,從前日後數從0開始遞增,從後往前數從-1開始遞減
    enter description here

4. 列表

  • 列表使用方括號[],元素間使用逗號,分隔
  • 列表中的元素能夠具備不一樣的數據類型
  • 列表屬於可變數據類型,列表中的元素是能夠更改的
  • 列表可使用+串聯在一塊兒,用*運算符重複
  • 列表截取(切片)的語法格式[begin : end](前閉後開區間)
  • 列表的索引,從前日後數從0開始遞增,從後往前數從-1開始遞減
  • 重要API:
    • list.append(obj):在列表末尾添加新元素
    • list.count(obj):統計obj在列表中出現過的次數
    • list.extend(seq):在列表中一次性追加另外一個序列seq中的全部值
    • list.index(obj):返回元素obj在列表中第一次出現的索引值
    • list.insert(idx, obj):將對象插入到列表中,位置爲idx,該位置原有的元素向後移動
    • list.pop(index=-1):移除列表中指定位置的元素(默認爲最後一個)並返回元素值
    • list.reverse():反轉列表
    • list.sort(cmp=None, key=None, reverse=False):對列表排序
    • list.clear():清空列表
    • list.copy():複製列表

5. 元組tuple

  • 元組使用小括號(),元素間使用逗號,分隔
  • 元組中的元素能夠具備不一樣的數據類型
  • 元組的元素是不可更改的
  • 單個元素不容許刪除或修改,只能刪除整個元組
  • 特殊語法:
    • 當元組中只有一個元素時,要在該元素後添加逗號,
      tup = (50, )
  • 元組與字符串相似,下標索引從0開始,能夠進行截取,組合等

6. 字典

  • 字典的鍵值使用冒號:分隔,鍵值對之間使用逗號,分隔,字典包括在花括號{}
  • 鍵必須是惟一的,不容許存在重複的鍵
  • 鍵必須是不可變類型,如字符串、數字或元組等
  • 向字典增添新的鍵值對,或者修改現有的值的方法與C++語言相似
  • 重要API:
    • dict.clear():刪除字典內的全部元素
    • dict.copy():返回字典的淺複製
    • dict.get(key, default=None):返回指定鍵的值,若是鍵不在字典中則返回default
    • key in dict:判斷鍵key是否在字典中
    • dict.items():返回列表形式的(key, value)元組數組
    • dict.keys():返回字典中鍵的迭代器
    • dict.values():返回字典中值的迭代器
    • dict.update(dict2):將另外一個字典中的鍵-值對更新到字典中
    • dict.pop(key, default=None):刪除字典中key對應的鍵值對,返回對應的值;若是鍵不存在,則返回傳入的default

7. 集合

  • 集合中的元素不容許重複,並且是無序的
  • 集合使用花括號{},元素間使用逗號,分隔
    • 建立空集合時必須使用set(),由於空花括號{ }表示空字典
  • 重要API:
    • set.add(obj):向集合中添加元素,若是元素已經存在,則不作任何操做
    • set.clear():清空集合
    • set.remove(obj):刪除集合中的某個元素。若是該元素不存在,將會報錯
    • set.discard(obj):刪除集合中的某個元素;若是元素不存在,不作任何處理
    • set.copy():返回集合的淺拷貝
    • set.update(set1):將另一個集合中的元素所有添加到集合中
    • set.isdisjoint(set1):判斷兩個集合中是否包含相等的元素,若是沒有,則返回True
    • 此外,還有集合的交、並、補、差等操做,用到時再查表

8. 迭代器和生成器

  • 迭代器:
    • 迭代器的基本方法iter()next()
  • 生成器:使用了yield的函數稱爲生成器(generator)
    • 生成器是返回迭代器的函數,只能用於迭代操做
    • 調用生成器,返回的是一個迭代器對象
    • 在調用生成器運行的過程當中,每次遇到 yield 時函數會暫停並保存當前全部的運行信息,返回yield 的值, 並在下一次執行 next() 方法時從當前位置繼續運行
import sys
 
def fibonacci(n): # 生成器函數 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一個迭代器,由生成器返回生成
 
while True:
    try:
        print (next(f), end=" ")
    except StopIteration:
        sys.exit()

9. 函數

  • Python函數的參數傳遞:
    • 不可變類型:相似於C++的值傳遞,如整數、字符串、元組。如func(a),傳遞的只是a的值,沒有影響a對象自己。好比在func(a)內部修改a的值,只是修改另外一個複製的對象,不會影響a 自己
    • 可變類型:相似於C++的引用傳遞,如列表、字典、集合等。
  • lambda表達式建立匿名函數:
    • lambda 函數擁有本身的命名空間,且不能訪問本身參數列表以外或全局命名空間裏的參數
    • 語法:lambda arg1, arg2,... : expression
    sum = lambda arg1, arg2: arg1 + arg2
    print ("相加後的值爲 : ", sum(10, 20))
    print ("相加後的值爲 : ", sum(20, 20))

10. 推導式:從序列建立序列

  • for以後跟一個表達式,而後有零到多個forif子句。返回結果是一個根據表達從其後的forif上下文環境中生成出來的序列
  • vec = [2, 4, 6]; [3*x for x in vec if x > 3]將生成列表[12, 18]

11. 面向對象

  • Python中類的構造器函數是__init__(...)
    • 在子類構造器中調用父類構造器方法:父類名.__init__(self, arg1, arg2,...)
  • 類的方法的第一個參數必須是self,表明調用該方法的類的實例
  • 類的私有屬性和私有方法:使用兩個下劃線__開頭,如__attrs__methods
相關文章
相關標籤/搜索