Python 部分知識點總結(二)

此篇博客只是記錄第四周未掌握或不熟悉的知識點,用來加深印象。

一、set 集操作

  1. set 翻譯為集合,collection翻譯為集合類型,是一個大概念
    set 是可變的,無序的,不重復的元素的集合
  2. set()? –>? 定義一個空集合
    >>> s4 = {}? ? ? ? ? ? ? ? ? ? ? 定義的是一個字典
    >>> s4 = {9,10,11}? ? ? ? ? 定義的是一個 set
    >>> s4 = {(1,2),10,’a’}? ? ? 定義的是一個 set
    >>> s4 = {[1],(1),1}? ? ? ? ? 定義不成功,因為 list 是可變類型,不能哈希
  3. set 元素的特性
    set 的元素要求必須可以 hash
    目前學過的不可 hash 的類型有 list、set
    元素不可以索引
    set 可以迭代
  4. 增加
    add(elem)
    ? ? ? 增加一個元素到 set 中
    ? ? ? 如果元素存在,什么都不做
    update(*others)
    ? ? ? 合并其他元素到 set 集合中來
    ? ? ? 參數 other 必須是可迭代對象
    ? ? ? 就地修改
  5. 刪除
    remove(elem)
    ? ? ? ?從 set 中移除一個元素
    ? ? ? ?元素不存在,拋出 KeyError 異常
    ?discard(elem)
    ? ? ? ?從 set 中移除一個元素
    ? ? ? ?元素不存在,什么都不做
    ? pop()? –>? item
    ? ? ? ? 移除并返回任意的元素
    ? ? ? ? 空集返回 KeyError 異常
    ? clear()
    ? ? ? ? ?移除所有元素
  6. 修改、查詢
    ? ? ?要么刪除,要么加入新的元素,因為不允許重復,如果能放進去,肯定不一樣,所以無法修改
    ? ? ?非線性結構,因為無法索引,所以無法查詢
    ? ? ?可以迭代所有元素
  7. 成員運算符的比較
    ? ? in 和 not in 判斷元素是否在 set 中,效率極快,因為相當于先 hash 一下,根據索引來查找的,效率是 O(1)
  8. 集合運算
    ? ?并集:A∪B,union(*others)? 等同于 |,即返回一個新的集合;update(*others) 等同于 |=,即就地修改
    ? ?交集:A∩B,intersection(*others) 等同于 &,即返回一個新的集合;intersection_update(*others) 等同于 &=,即就地修改
    ? ?差集:A-(A∩B),difference(*others) 等同于 – ,即返回一個新的集合;difference_update(*others) 等同于 -=,即就地修改
    ? ? 對稱差集:(A-(A∩B)) +?(B-(A∩B)),symmetric_difference(other)? 等同于 ^,即返回一個新的集合;symmetric_difference_update(other)?等同于 ^=,即就地修改
    ? ? ?issubset(other) 即 <=
    ? ? ?isuperset(other) 即 >=
    ? ? ?isdisjoin(other) 判斷當前集合和另一個集合沒有交集,如果沒有,則返回 True

二、封裝和解構

  1. x,y = y,x? ?先把等號右邊的封裝起來組成一個元組,然后左邊再解構,賦予對應的值
  2. 解構
    ? ?把線性結構的元素解開,并順序的賦給其它變量
    ? ?左邊接納的變量數要和右邊解開的元素個數一致
    ? ?使用 *變量名 接收,但不能單獨使用
    ? ?被 *變量名 收集后組成一個列表
    ? ? ? ? ? ? ? ??head,*mid,tail = “abcdefgh”
    ? ? ? ? ? ? ? ? >>> mid? ?–>??[‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’]
    ? ? ? ? ? ? ? ? >>> type(mid)? –> list
  3. 丟棄變量
    ? ? 這是一個慣例,是一個不成文的約定,不是標準
    ? ? 如果不關心一個變量,就可以定義改變變量的名字為 _
    ? ? _? 是一個合法的標識符,也可以作為一個有效的變量使用,但是定義成下劃線就是希望不要被使用,除非你明確知道這個數據需要使用
    ? ? ?_ 這個變量本身無任何語義,沒有任何可讀性,所以不是用來給人使用的
    ? ? ?Python 中很多庫,都使用這個變量,使用十分廣泛,請不要在不明確變量作用域的情況下,使用 _ 導致和庫中 _ 沖突
  4. 練習
    ? 環境變量 JAVA_HOME = /usr/bin,返回環境變量名和路徑
    ? first,*_,second = “JAVA_HOME=/usr/bin”.partition(“=”)
    ? print(first)
    ? print(second)

三、切片

  1. 支持負索引
  2. 超過上界(右邊界),就取到末尾;超過下界(左邊界),取到開頭
  3. start 一定要在 stop 的左邊
  4. [:] 表示從頭到尾,全部元素被取出,等效于 copy() 方法
  5. [start:stop:step]? ?step 要和 start:stop 同向,否則返回空序列

四、format函數

  1. format 函數格式字符串語法:
    ? ?“{} {×××}”.format(*args,**kwargs)? –> str
    ? ?agrs 是位置參數,是一個元組
    ? ?kwargs 是關鍵字參數,是一個字典
    ? ?花括號表示占位符
    ? ?{}表示按照順序匹配位置參數,{n}表示取位置參數索引為 n 的值
    ? ?{×××} 表示在關鍵字參數中搜索名稱一致的
    ? ?{{}} 表示打印花括號
  2. 位置參數:”{}:{}”.format(‘192.168.1.100’,8888),這就是按照位置順序用位置參數替換前面的格式字符串中的占位符
    關鍵字參數或命名參數:”{server} {1}:{0}”.format(8888,’192.168.1.100′,server=’Web Server Info:’),位置參數按照序號匹配,關鍵字參數按照名詞匹配
    訪問元素:”{0[0]}.{0[1]}”.format((‘magedu’,’com’))
    對象屬性訪問:
    ? ? ? ?from collections import namedtuple
    ? ? ? ?Point = namedtuple(‘Point’,’x y’)
    ? ? ? ?p = Point(4,5)
    ? ? ? ?“{{{0.x},{0.y}}}”.format(p)
  3. 對齊
    ?‘{0}*{1}={2}’.format(3,2,2*3)
    ?‘{0}*{1}={2:<2}’.format(3,2,2*3)? ?左對齊
    ? ‘{0}*{1}={2:>05}’.format(3,2,2*3)? 右對齊,且不夠的位置補 0
    ? ‘{:*^30}’.format(‘centered’)? ?居中,且不夠的位置補 *
  4. 進制
    ?>>> “int:{0:d}; hex:{0:x}; oct:{0:o}; bin:{0:b}”.format(42)
    ?‘int:42; hex:2a; oct:52; bin:101010’
    ? >>> “int:{0:d}; hex:{0:#x}; oct:{0:#o}; bin:{0:#b}”.format(42)? ?#的作用是會將不同類型的數據加上相應的前綴
    ? ‘int:42; hex:0x2a; oct:0o52; bin:0b101010’
  5. 浮點數
    ?>>> print(“{}”.format(3**0.5))
    ?1.7320508075688772
    ?>>> print(“{:g}”.format(3**0.5))
    ? 1.73205
    ? >>> print(“{:f}”.format(3**0.5))
    ? 1.732051
    ? >>> print(“{:10f}”.format(3**0.5))? ? 右對齊
    ? 1.732051
    ? >>> print(“{:2}”.format(102.231))? ? 寬度為2,本來數字寬度已超過2,此參數等于無效
    ? 102.231
    ? >>> print(“{:.2}”.format(3**0.5))? ? ?2個有效數字
    ? 1.7
    ? >>> print(“{:.2f}”.format(3**0.5))? ? 小數點后2位
    ? 1.73
    ? >>> print(“{:3.2f}”.format(3**0.5))? ? ?寬度為3,小數點后2位
    ? ? ?1.73
    ? ?>>> print(“{:3.3f}”.format(0.2745))? ??寬度為3,小數點后3位,因為精度的原因所以才超過寬度
    ? ?0.275
    ? ?>>> print(“{:3.3%}”.format(1/3))
    ? ?33.333%

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/93839

(0)
龐豪龐豪
上一篇 2018-03-30
下一篇 2018-03-30

相關推薦

  • Python函數

    函數 數學函數 Python函數 若干語句塊、函數名稱、參數列表構成,組織代碼的最小單元 完成一定的功能 作用 結構化編程對代碼的最基本的封裝,一般按照功能組織一段代碼 復用,減少冗余代碼 簡潔美觀,可讀易懂 函數分類 內建函數,max()、reversed() 庫函數,math.ceil() 函數定義、調用 def語句定義函數 def 函數名(參數列表):…

    2018-04-16
  • 元組與字符串

    元組tuple 一個有序的元素組成的集合,不可變,用()表示,可進行索引,正索引:從左至右,從0開始;負索引:從右至左,從-1開始,正負索引不可超界,否則引發indexerror,tuple[index],index就是索引,使用中括號訪問 元組是只讀的,所以沒有增,改,刪的方法 冒泡法:屬于交換排序,兩兩比較大小,交換位置,結果分為升序和降序排列 升序:n…

    Python筆記 2018-04-01
  • Python數據結構

    數據結構個人總結,方便以后查找。

    Python筆記 2018-04-01
  • 函數與生成器

    函數 由若干語句組成的語句塊,函數名,參數列表構成,是組織代碼的最小單元,完成一定的功能,結構化編程對代碼的最基本的封裝,封裝的目的是為了復用 函數中沒有return,隱式會返回一個none值 定義中的參數列表成為形式參數,只是一種形式表達,簡稱形參 調用時寫的參數是實際參數,是實實在在傳入的值,簡稱實參 函數的定義,只是聲明了參數,不會執行,可以進行調用,…

    2018-04-16
  • 文件IO常用操作

    io模塊 StringIO BytesIO 類
    pathlib模塊 路徑操作 3.4版本開始
    os模塊 更改權限、顯示信息 3.4版本之前路徑操作
    shuril 模塊(高級文件操作
    csv 文件
    configparser模塊 ini文件處理

    2018-05-02
  • python內置數據結構

    python內置數據結構 sort(key=none,resverse=false)—>none 對列表元素進行排序,就地修改。默認升序 resvers為true,反轉,降序 key為一個函數,指定key如何排序 ls.sort(key=functionaame) Print(lst.sort(key=str,reverse=Ture) I…

    Python筆記 2018-03-31
欧美性久久久久