1. 程式人生 > >2 字串&列表&元祖&集合&字典&淺拷貝和深拷貝(針對可變物件)

2 字串&列表&元祖&集合&字典&淺拷貝和深拷貝(針對可變物件)

  1. String'',反斜槓\代表部分符號的本意,也用於特殊字元,如換行符等
    1. *字串物件呼叫函式可賦值給其他物件
    2. 切片:擷取字串,字串變數[起始:結束:步長],包含起始值不包含結束值,步長預設為1,第一個字元的下標為0,負數則為倒數,倒數從-1開始;下標即索引
      1. a[::-1]倒序輸出字串
    3. 連線字串,必須是相同格式的字串才能運算
      1. +表示連線字串
      2. *表示複製字串
    4. 其他注意:
      1. 逗號在列印的時候表示空格
      2. r用在字串左邊,表示對轉義字元取消轉義作用
      3. \n換行
  2. 輸入與輸出
    1. print(values,sep,end,file,flush)
      1. values可以是任何多個無名引數,各個值之間用,相隔開,打印出來是空格隔開
      2. sep輸入多個列印的值時,各個值之間分割方式
      3. end='\n',預設換行
      4. file=sys.stdout設定輸出裝置,及把print中的值列印到什麼地方
      5. flush=F預設不重新整理,當檔案物件關閉時才將內容輸出到txt檔案中;T時,將立刻傳到txt中
    2. 輸出的格式化操作符:%[(name)][flags][width].[precision]typecode
      1. (name):字典引數,和()是一個整體,同時出現
        1. print('i am a %(key)s'%{key:value,key1:value1})
      2. flag
        1. +正數之前顯示'+'
        2. -左對齊
        3. 0數字之前用0填充
        4. %轉義出普通的%
      3. width顯示寬度
      4. precision小數點後的精度
      5. typecode
        1. %[n]d正數,佔用n個字元
        2. %[n].2f浮點數,設定精確到兩位小數
        3. %s字串或數值
        4. %e科學計數法
      6. 字串外%{key:value}
  3. input()輸入,能夠從使用者這裡獲取輸入資料,將獲取的資料賦值給相應的變數,一律以字串的形式儲存
  4. 字串常用函式:字串變數.函式()
    1. *切片:字串變數[起始:結束:步長];下標即索引,從0開始
    2. find檢測字串是否包含指定字元,如果是返回初始的索引值,否則返回-1
    3. index檢測字串是否包含指定字元,如果是返回初始的索引值,否則提示錯誤
    4. count返回str1在string中指定索引範圍內[start, end)出現的次數
    5. replace將str1中的str1替換成str2,如果指定count,則不超過count次
    6. split如果maxsplit有指定值,則僅分割 maxsplit 個子字串,返回字串列表
    7. capitalize將字串的首字母大寫
    8. title將字串中每個單詞的首字母大寫
    9. startswith/endwith檢查字串是否是以 obj 開頭/結尾, 是則返回 True,否則返回 False
    10. lower/upper將字串轉換為小寫/大寫
    11. ljust(width,'fillchar')/rjust/center(width,'fillchar')返回一個原字串左/右對齊/居中,並使用空格填充至長度 width 的新字串
    12. lstrip/rstrip/strip去除字串左邊/右邊/兩邊空白字元
    13. partition可以將字串以第一個出現的str1進行分隔成三個部分,[str1前,str1,str1後
    14. join有序物件中每個元素(字元)後面插入str1,構造出一個新的字串
    15. isspace如果 str1 中只包含空格,則返回 True,否則返回 False
    16. isalnum如果 str1 所有字元都是字母或數字則返回 True,否則返回 False
    17. isdigit如果 str1 只包含數字則返回 True 否則返回 False,小數點被認為字元
    18. isalpha如果 str1 所有字元都是字母 則返回 True,否則返回 False
  1. list[]列表
    1. *列表是可變物件,呼叫函式會修改原物件,並且優先修改原物件而不會賦值給其他物件
    2. 元素之間用,隔開,元素的型別不一定要相同
    3. 列表可以被索引或切片,下標從0開始
    4. 列表可以用'+'拼接操作
    5. 列表中的元素是可變有序的
    6. 列表中巢狀列表時,列表[第一個列表的下標][第二個列表的下標],這樣取數,並不代表陣列
  2. 訪問列表:列表可以被索引或切片,下標從0開始
  3. 操作列表:會影響原物件
    1. 修改:list[x]='...'
    2. 新增
      1. 列表末尾新增元素list.append('')
      2. 列表中任意位置新增元素list.insert(索引index,'')
    3. 刪除
      1. 刪除最後一個元素並返回刪除值list.pop(index)
      2. 刪除元素del list[index]
      3. 刪除指定元素值list.remove(元素)
    4. 查詢:在與不在,T or F
      1. 元素 in list
      2. 元素 not in list
  4. 列表相關函式:function(list)操作物件;list.fun()列表函式
    1. len(list)返回列表元素個數,有序物件都可操作
    2. max(list)返回列表元素中的最大值。預設數值型的引數,取最大值。預設字元型的引數,取字母排序靠後者
    3. min(list)返回列表元素中的最小值。預設數值型的引數,取最小值。預設字元型的引數,取字母排序靠前者
    4. list.count(obj)統計某個元素在列表中出現的次數
    5. extends(list)擴充套件列表,在一個列表的末尾一次性追加一個新的列表,引數為一個列表
    6. list.index(obj)用於從列表中找出某一個值第一個匹配項的索引位置
    7. list.reverse()反向列表中的元素
    8. list.sort(reverse=T)對列表進行排序,該方法沒有返回值。更改的是原陣列,=T則從大到小
    9. list.clear()用於清空列表
    10. list.copy()複製列表
  1. tuple()元祖
    1. 用,分隔
    2. tuple的元素不可變有序,但可以包含可變的元素,如列表
    3. 構造包含0個或者1個元素的tuple有特殊語法;tuple的輸出也是帶括號的
      1. tuple=()
      2. tuple=(1,),一個元素必須加上",",不然會返回數值或字串
    4. 元祖可以被索引或切片,tuple[index]
  2. 元祖的操作
    1. 刪除元祖:元祖中的元素值是不允許被單獨修改和刪除的,但是可以del tuple
      1. 間接刪除:list(tuple)->tuple(list),元祖轉化為列表修改後,再轉回來
      2. 強制型別轉換函式:list();tuple();int();str();dict()
    2. 多維元祖:多維元祖就是元祖中的元祖,元祖中的元素可以是一個新的元祖tuple[][]
      1. 多維元祖,如果元素是列表等可變物件,可以直接修改
  1. sets{}集合:確定性,互異性,無序性
  2. dictionary{}字典
    1. 對映型別,無序的鍵key:值value對集合
      1. 不能索引或切片
    2. 鍵值對用,隔開
    3. 鍵必須是不可變型別,且鍵必須是唯一的;值則無要求
  3. 物件,都可以是變數
    1. 不可變:數值,字串,元祖
    2. 可變:列表,字典
    3. 可變有序:列表list[]
    4. 不可變有序:元祖tuple()
    5. 可變無序:dictionary{},sets{}
  4. 字典操作
    1. *所有物件型別都用[]來定位
    2. 訪問字典dict[key]
    3. 新增元素dict[new_key]=new_value
    4. 修改字典dict[key]=value
    5. 刪除字典del dict[key]/del dict,刪除一個元素或全部刪除
    6. 清空字典dict.clear()
  5. 字典函式
    1. len(dict)計算字典中元素的個數
    2. str(dict)輸出字典,以可列印的字串表示
    3. type(variable)返回輸入變數的資料型別,如果變數是字典就返回<class ‘dict’>
    4. dict.fromkeys(seq[,value])建立一個新字典,以序列(列表或元祖)seq中元素做字典的鍵,value為字典所有鍵對應的初始值
    5. dict.get(key,default=None)返回指定鍵的值,如果值不在字典中返回default值
    6. dict.setdefault(key,default=None)和get類似,鍵存在則返回值,但如果鍵不存在於字典中,將會新增鍵並將值設為default
    7. key in dict如果鍵在字典dict裡返回true,否則返回false
    8. dict.keys()以列表返回一個字典所有的鍵
    9. dict.values()以列表返回一個字典中的所有值
  1. 淺拷貝
    1. 方法
      1. copy.copy():copy模組的copy方法
      2. list.copy():列表物件的copy方法
      3. list[:]:列表起始到結束的切片
      4. list(list):強制型別轉換物件的型別
    2. 可變物件裡面的子物件是不可變物件時,修改子物件不會影響原物件;子物件是可變物件時,修改子物件會影響原物件和其他淺拷貝物件
  2. 深拷貝
    1. 方法
      1. copy.deepcopy():copy模組的deepcopy方法
    2. 不管你的子物件是可變還是不可變物件,都不會影響原物件
  3. 特點:修改的是物件的元素
    1. 可變物件:修改物件(是方法等)是在原物件的基礎上進行修改,沒有返回值
    2. 不可變物件:修改物件是不會影響原物件,有返回值
  4. 可變物件的直接賦值:相當於雙胞胎,幾乎一致,任何修改都相互影響
  1. 列表
      1. list.append()列表末尾新增元素
      2. list.insert(index,'')列表中任意位置新增元素
      3. list.extend()列表的末尾一次性追加一個新的列表
      1. list.remove(value)刪除指定元素值
      2. list.pop()刪除最後一個元素並返回刪除值,即彈出
      3. list.clear()清空列表
      4. del list[index]刪除元素
      1. list[index]=''
      1. list[index]
      2. list.index(元素)返回元素索引
  2. 元祖:無法直接增刪改查,可以轉換成列表進行增刪改查
  3. 字典:
      1. dict[new_key]=new_value新增元素
      2. dict.setdefault(key,default=None)和get類似,鍵存在則返回值,但如果鍵不存在於字典中,將會新增鍵並將值設為default
      3. dict.update(dict1)將字典物件新增到dict中
      1. del dict[key]/del dict,刪除一個元素/全部刪除
      2. dict.clear()清空字典
      3. dict.pop(key,default=None)至少需要1個變數,沒有則報錯,因為是無序的不能彈出最後一個,根據key刪除鍵,沒有則default(default必須有)
      4. dict.popitem()隨意刪除1個key:value
      1. dict[key]=value修改字典
      1. dict[key]檢視值
      2. dict.keys()
      3. dict.values()
      4. dict.item()遍歷key:value
      5. dict.get(key,default=None)返回指定鍵的值,如果值不在字典中返回default值
  1. 內建函式:dir(__builtins__)查詢
    1. 數學運算
      1. abs
      2. divmod返回兩個數值的商和餘數組成的元祖
      3. max返回可迭代物件中的最大值
      4. min
      5. pow前兩個引數是冪運算值,第三個引數取模運算
      6. round
      7. sum對元素型別是數值的可迭代物件中的每個元素進行求和,sum(list)
    2. 型別轉換
      1. bool根據你所傳入的引數的邏輯值進行判斷,返回True或者False;有元素存在即T,沒有為F
      2. int不識別字符串
      3. float識別字符串
      4. complex
      5. str
      6. bin將整數轉換成2進位制字串
      7. oct將整數轉換成8進位制字串
      8. hex將整數轉換成16進位制字串
      9. tuple將傳入的引數轉換成元祖
      10. list
      11. dict
      12. enumerate根據可迭代物件建立列舉物件,具體為list(enumerate(list))=[(0,list_element_1),(1,list_element_2)]
      13. range根據所傳入的引數建立一個新的range物件,range(start,end,step),左閉右開,一般配合list(range())
        1. 一個數字x代表從0開始的x個元素的序列
      14. slice返回的是切片物件,一般配合為list(range()[slice()]),slice(start,end,step)左閉右開
    3. 序列操作:
      1. all判斷可迭代物件的每個元素是否都為True,list中的0即為F,空list和空tuple為T
      2. any判斷可迭代物件裡面的元素是否有True值的元素,空list和空tuple為F
      3. filer
      4. map
      5. next
      6. reversed反轉序列生成新的可迭代物件,list(reversed(range()))
      7. sorted預設從小到大排序,sorted(list,reverse=F)
      8. zip將傳入的兩個序列位置元素一一對應,返回一個新的迭代物件;只返回能對應的對映,不會迴圈,取較少的序列的元素個數
    4. 物件操作:
      1. help返回物件的幫助資訊,help(list)
      2. dir返回當前作用域的屬性列表,包含物件的方法
      3. id返回物件的唯一標誌,在淺拷貝中出現的概念,可變物件指向某個id
      4. type
      5. len
      6. format
      7. vars返回當前作用域方法或者屬性與值組成的字典,或者屬性列表,var(list)
    5. 互動操作:
      1. print
      2. input
    6. 編譯執行:
      1. eval執行字串型別表示式的值,print(eval()),eval有返回值
      2. exec直接執行復雜的python程式碼,exec(''),exec沒有返回值
        • ee=input('請輸入你要計算的求和式子:'),ee擷取輸入,轉化為string
        • print(eval(ee))直接輸出求和結果