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 20:45
下一篇 2018-03-30 21:46

相關推薦

  • Ipython封裝解構

    IPython Shell命令 !command 執行shell命令 !ls -l , !touch a.txt file = !ls -l | grep py 魔術方法 使用%開頭的,IPython內置的特殊方法 %magic 格式 %開頭是line magic %% 開頭是cell magic,notebook的cell %alias 定義一個系統命令的…

    2018-04-09
  • Python 部分知識點總結(五)

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

    Python筆記 2018-04-25
  • python學習總結

    內建函數、函數、插入排序、樹

    2018-04-15
  • Python內置數據結構——列表

    知識框架圖 學習筆記 數據結構分類 數值 int、float、complex、bool都是class int:長整型,沒有上限,取決于內存區域大小 float:支持十進制和科學計數法,僅支持雙精度 complex:復數,有實數和虛數部分 bool:int的子類,True、False對應1、0,可以和整數直接運算 序列對象 字符串str 列表list 元組tu…

    2018-03-26
  • 基礎語法

    基礎語法、判斷、循環

    2018-03-26
欧美性久久久久