Python要點復習


Python要點復習

1. 數據類型概覽

Number/String/List/Tuple/Set/Dictionary

  • 是否可變:
    • 不可變數據類型: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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM