1. 程式人生 > 其它 >Python的內建方法

Python的內建方法

字典的內建方法

   1.型別轉換
  dict()
  d1 = {
    'name': 'jason',
    'age': 18,
    'hobbies': ['play game', 'basketball']
  }
  # 1.1按key取值
   print(d1['name'])  # jason  鍵存在
   print(d1['xxx'])  # 鍵不存在直接報錯
  """涉及到字典取值 更加推薦下面的方式"""
   print(d1.get('name'))  # jason  鍵存在
   print(d1.get('xxx'))  # None  鍵不存在不會報錯 而是返回None
   print(d1.get('xxx', '這個鍵不存在'))  # 第二個引數不寫預設返回None 寫了則返回寫了的
   print(d1.get('name', '這個鍵不存在'))  # 如果鍵存在 則不需要使用到第二個引數

2.修改值 字典也是可變型別

  d1 = {'name': 'jasonDSB', 'age': 18, 'hobbies':['play game', 'basketball']}
  print(id(d1))
  d1['name'] = 'jasonDSB'  # 鍵存在是修改值
  print(d1, id(d1))

3.新增鍵值對

  d1 = {'name': 'jason', 'age': 18, 'hobbies':['play game', 'basketball']}, pwd'123'
  d1 = {'name': 'jason', 'age': 18, 'hobbies':['play game', 'basketball']}
  d1['pwd'] = 123  # 鍵不存在則是新增一個鍵值對
  print(d1)

4.統計字典中鍵值對的個數

    print(len(d1))  # 3 三個個數

    5.成員運算  也只能判斷key而已
    print('jason' in d1)  # False  V的值拿不到,只能判斷key
    print('name' in d1)  # True

6.刪除鍵值對

  # 6.刪除鍵值對
  del d1['name']  # 通用的刪除方式
  print(d1)  # {'age': 18, 'hobbies': ['play game', 'basketball']}

  print(d1.pop('age'))  # 18  彈出
  print(d1)  # {'name': 'jason', 'hobbies': ['play game', 'basketball']}

  d1.popitem()  # 隨機彈出一個(使用頻率很低 可以忽略)
  print(d1)

7.獲取所有的鍵 所有的值 所有的鍵值對

   print(d1.keys())  # dict_keys(['name', 'age', 'hobbies'])  可以看成是列表
   print(d1.values())  # dict_values(['jason', 18, ['play game', 'basketball']])  可以看成是列表
   print(d1.items())  # dict_items([('name', 'jason'), ('age', 18), ('hobbies', ['play game', 'basketball'])])  可以看成是列表套元組

   for v in d1.values():
       print(v)    # 獲取所有value的值,並打印出來
   """在python2中上述三個方法就是直接返回一個列表 """

1.update更新字典

   dic = {'k1': 'jason', 'k2': 'Tony', 'k3': 'JY'}
   dic.update({'k1': 'JN', 'k4': 'xxx'})
   print(dic)  # 鍵存在則修改 鍵不存在則新增
   2.fromkeys()快速生成字典
   dic = dict.fromkeys(['k1', 'k2', 'k3'], [])
   print(dic)  # {'k1': [], 'k2': [], 'k3': []}

   dic['k1'].append(111)  # 三個鍵指向的是同一個列表
   print(dic)  # {'k1': [111], 'k2': [111], 'k3': [111]}
   3.setdefault()
   dic = {'k1': 111, 'k2': 222}
   print(dic.setdefault('k3', 333))  # 鍵不存在則新增鍵值對 並且有返回結果是新增的v
   print(dic)

元組內建方法

 # 1.型別轉換
    支援for迴圈的資料型別都可以轉成元祖
    print(tuple(11))  # 整形 報錯
    print(tuple(11.11))  # 浮點型 報錯
    print(tuple('jason'))  # 字串
    print(tuple([11,22,33,44]))  # 列表型
    print(tuple({'name':'jason'}))  # 字典
    print(tuple({11,22,33,44}))  # 集合
    print(tuple(True))  # 布林型 報錯

 # 2.元組的特性
    t1 = (11, 22, 33, 44)
    print(type(t1))  # <class 'tuple'>
    t2 = (11)
    print(type(t2))  # int
    t2 = (11.11)
    print(type(t2))  # float
    t2 = ('jason')
    print(type(t2))  # str
    """當元組內只有一個元素的時候 一定要在元素的後面加上逗號"""
    t2 = (11,)
    print(type(t2))  # tuple
    t2 = (11.11,)
    print(type(t2))  # tuple
    t2 = ('jason',)
    print(type(t2))  # tuple
    '''
    一般情況下 我們會習慣性的將所有可以儲存多個數據的型別的資料 如果內部只有一個元素 也會加逗號
        (1,)
        [1,]
        {1,}
        {'name':'jason',}
    '''

索引取值

  t1 = (11, 22, 33, 44, 55, 66)
  # 1.索引取值
    print(t1[0])
    print(t1[-1])

  # 2.切片操作
    print(t1[1:4])
    print(t1[-1:-4:-1])
    print(t1[-4:-1])

  # 3.間隔
    print(t1[1:4:2])  # (22, 44)

  # 4.統計元組內元素的個數
    print(len(t1))  # 6

  # 5.成員運算
    print(22 in t1)  # True

  # 6.統計某個元素出現的次數
    print(t1.count(22))

  # 7.元組內元素不能"修改": 元組內各個索引值指向的記憶體地址不能修改
    t1[1] = 111

7.元組內元素不能“修改”:元組內各個索引值指向的記憶體地址不能修改

    tt = (11, 22, 33, [11, 22])
    print(id(tt[-1]))
    tt[-1].append('heiheihei')
    print(id(tt[-1]))
    print(tt)

集合內建方法

  # 1.型別轉換
  print(set(11))  # 報錯
  print(set(11.11))  # 報錯
  print(set('jason'))
  print(set([11, 22, 33, 44]))
  print(set({'name': 'jason'}))
  print(set((11, 22, 33)))
  print(set(True))  # 報錯
  """集合內元素只能是不可變型別"""

  """集合只會在去重和關係運算中使用 甚至有時候也不會用"""

  2.兩大功能
	1.去重
    	集合內不能出現重複的元素(自帶去重特性)
        如果出現了 會被集合自動去重
    2.關係運算
    	判斷兩個群體內的差異	
        	eg:共同好友 共同關注 共同點贊

  """集合內元素只能是不可變型別"""
   s1 = {1,1,1,1,1,1,2,2,2,2,2,1,2,3,2,2,1,2,3,2,3,4,3,2,3}
   print(s1)  # {1, 2, 3, 4}
   l = ['a', 'b', 1, 'a', 'a']
   s1 = set(l)
   l = list(s1)
   print(l)

  # 關係運算
  f1 = {'jason', 'kevin', 'tony', 'jerry'}  # 小李的好友列表
  f2 = {'jason', 'tom', 'jerry', 'jack'}  # 小王的好友列表

  # 1.求兩個人的共同好友
   print(f1 & f2)  # {'jerry', 'jason'}

  # 2.求小李的單獨好友
   print(f1 - f2)  # {'kevin', 'tony'}

  # 3.求兩個人所有的好友
   print(f1 | f2)  # {'kevin', 'jack', 'tom', 'jason', 'jerry', 'tony'}

  # 4.求兩個人各自的好友
  print(f1 ^ f2)  # {'jack', 'tony', 'tom', 'kevin'}

  

垃圾回收機制

    """python底層針對空間的申請和釋放都是設計好的 不需要程式設計師操心"""
  1.引用計數
  	python會將引用計數為0的資料清除
      	name = 'jason'  # jason引用計數為1
          a = name        # jason引用計數為2
          '''記憶體中資料身上繫結的變數名的個數'''
          # ps:還可以瞭解一下迴圈引用的情況
  2.標記清除
  	當記憶體空間即將溢位(滿了)的時候 python會自動啟動應急機制
      停止程式的執行 挨個檢查值的引用計數並給計數為0的資料打上標記
      然後一次性清理掉
  3.分代回收
  	根據值存在的時間長短 將值劃分為三個等級(1,2,3)
      	  等級1 檢測機制每隔5s來一次
          等級2 檢測機制每隔1min來一次
          等級3 檢測機制每隔5min來一次