系統學習python第六天學習筆記

1.補充

1.列表方法補充

  • reverse,反轉。python

    v1 = [1,2,3111,32,13]
    print(v1)
    v1.reverse()
    print(v1)
  • sort,排序算法

    v1 = [11,22,3111,32,13]
    print(v1)
    
    # v1.sort(reverse=False) # 從小到大(默認)
    # v1.sort(reverse=True) # 從大到小
    # print(v1)

2.字典方法補充

  • keys/values/itemsapp

  • getcode

    • 判斷字典中是否存在鍵,不存在則返回None,存在則取對應的值並返回賦值給變量
    info = {'k1':'v1','k2':'v2'}
    
    # v1 = info['k11111']
    # v2 = info.get('k1111') # None就是Python中的空
    # v3 = info.get('k1111',666)
    # print(v2)
    
    # None數據類型,改類型表示空(無任何功能,專門用於提供空值)
  • pop排序

    • 刪除,也能夠用del刪除
    info = {'k1':'v1','k2':'v2'}
    result = info.pop('k2')
    print(info,result)
    
    del info['k1']
  • update索引

    • 不存在,則添加/存在,則更新
    info = {'k1':'v1','k2':'v2'}
    
    # 不存在,則添加/存在,則更新
    info.update({'k3':'v3','k4':'v4','k2':666})
    print(info)

3.判斷一個字符串中是否有敏感字符?

  • str內存

    v = "Python全棧21期"
    
    if "全棧" in v:
        print('含敏感字符')
  • list/tuple字符串

    v = ['alex','oldboy','藏老四','利奇航']
    
    if "利奇航" in v:
        print('含敏感')
  • dictget

    v = {'k1':'v1','k2':'v2','k3':'v3'}
    
    # 默認按照鍵判斷,即:判斷x是不是字典的鍵。
    if 'x' in v:
        pass 
    
    # 請判斷:k1 是否在其中?
    if 'k1' in v:
        pass
    # 請判斷:v2 是否在其中?
    # 方式一:循環判斷
    flag = '不存在'
    for v in v.values():
        if v == 'v2':
            flag = '存在'
    print(flag)
    # 方式二:
    if 'v2' in list(v.values()): # 強制轉換成列表 ['v1','v2','v3']
          pass
    # 請判斷:k2:v2 是否在其中?
    value = v.get('k2')
    if value == 'v2':
        print('存在')
    else:
        print('不存在')
  • 練習題input

    # 讓用戶輸入任意字符串,而後判斷此字符串是否包含指定的敏感字符。
    
    char_list = ['利奇航','堂有光','炸展會']
    content = input('請輸入內容:') # 我叫利奇航  / 我是堂有光  / 我要炸展會
    
    success = True
    
    for v in char_list:
        if v in content:
            success = False
            break
    
    if success:
      print(content)
    else:
        print('包含銘感字符')
    
    # 示例:
    # 1. 昨天課上最後一題
    # 2. 判斷 ‘v2’ 是否在字典的value中 v = {'k1':'v1','k2':'v2','k3':'v3'} 【循環判斷】
    # 3. 敏感字

注意點:

  • 可設置一個標籤來判斷狀態

    char_list = ['利奇航','堂有光','炸展會']
    content = input('請輸入內容:')
    success = True  # 標籤判斷狀態
    for v in char_list:
        if v in content:
            success = False
            break
    if success:
        print(content)
    else:
        print('包含銘感字符')

2.集合 set

  • 特色

    • 無序
    • 無重複
  • 空集合的建立

    v = {1,2,3,4,5,6,99,100}
    
    # 疑問:v = {}
    """
    None
    int
        v1 = 123
        v1 = int() --> 0
    bool
        v2 = True/False
        v2 = bool() -> False
    str
        v3 = ""
        v3 = str()
    list
        v4 = []
        v4 = list()
    tuple
        v5 = ()
        v5 = tuple()
    dict
        v6 = {}
        v6 = dict()
    set
        v7 = set()
    """
  • 集合獨有功能

    • add 添加

      # v = {1,2}
      # v.add('Lishaoqi')
      # v.add('Lishaoqi')
      # print(v)
    • discard 刪除

      # v = {1,2,'李邵奇'}
      # v.discard('李邵奇')
      # print(v)
    • update 批量添加

      # v = {1,2,'李邵奇'}
      # v.update({11,22,33})
      # print(v)
    • intersection 交集

      # v = {1,2,'李邵奇'}
      # result = v.intersection({1,'李邵奇','小黑'})
      # print(result)
    • union 並集

      # v = {1,2,'李邵奇'}
      # result = v.union({1,'李邵奇','小黑'})
      # print(result)
    • difference 差集

      # v = {1,2,'李邵奇'}
      # result = v.difference({1,'李邵奇','小黑'}) # v中有且{1,'李邵奇','小黑'}沒有
      # print(result)
      
      # v1 = {1,'李邵奇','小黑'}
      # result1 = v1.difference({1,2,'李邵奇'})
      # print(result1)
    • symmetric_difference 對稱差集

      # v = {1,2,'李邵奇'}
      # result = v.symmetric_difference({1,'李邵奇','小黑'})
      # print(result)

    注意:交集、並集和差集括號內傳入參數時,能夠一樣是集合,也能夠是列表和元組

  • 公共功能

    • len

      v = {1,2,'李邵奇'}
      print(len(v))
    • for循環

      v = {1,2,'李邵奇'}
      for item in v:
          print(item)
    • 索引【無】

    • 步長【無】

    • 切片【無】

    • 刪除【無】

    • 修改【無】

  • 嵌套問題

    • 哈希問題

    列表/字典/集合:不能放在集合中,也不能做爲字典的key(unhashable)

    # 1. 列表/字典/集合 -> 不能放在集合中+不能做爲字典的key(unhashable)
    # info = {1, 2, 3, 4, True, "國風", None, (1, 2, 3)}
    # print(info)
    # 2. hash -> 哈希是怎麼回事?
    # 由於在內部會將值進行哈希算法並獲得一個數值(對應內存地址),之後用於快速查找。
    
    # 3. 特殊狀況
    # info = {0, 2, 3, 4, False, "國風", None, (1, 2, 3)}
    # print(info)
    # 此時不打印False
    
    # info = {
    #     1:'alex',
    #     True:'oldboy'
    # }
    # 此時沒有key爲True的鍵,而是'oldboy'將'alex'覆蓋
    # print(info)

3.內存相關

  • 示例一

    v1 = [11,22,33]
    v2 = [11,22,33]
    
    v1 = 666
    v2 = 666
    
    v1 = "asdf"
    v2 = "asdf"
    
    # 按理 v1 和 v2 應該是不一樣的內存地址。特殊:
    1. 整型:  -5 ~ 256 
    2. 字符串:"alex",'asfasd asdf asdf d_asdf '   ----"f_*" * 3  - 從新開闢內存。

特殊:

# 按理 v1 和 v2 應該是不一樣的內存地址。特殊:
1. 整型:  -5 ~ 256 
2. 字符串:"alex",'asfasd asdf asdf d_asdf '   
    ----"f_*" * 3  - 從新開闢內存。
  • 示例二:

    v1 = [11,22,33,44]
    v1 = [11,22,33]
  • 示例三:

    v1 = [11,22,33]
    v2 = v1 
    
    # 練習1 (內部修改)
    v1 = [11,22,33]
    v2 = v1 
    v1.append(666)
    print(v2) # 含 666
    
    # 練習2:(從新賦值)
    v1 = [11,22,33]
    v2 = v1 
    v1 = [1,2,3,4]
    print(v2)
    
    # 練習3:(從新賦值)
    v1 = 'alex'
    v2 = v1
    v1 = 'oldboy'
    print(v2)
  • 示例四

    v = [1,2,3]
    values = [11,22,v]
    
    # 練習1:
    """
    v.append(9)
    print(values) # [11,22,[1,2,3,9]]
    """
    # 練習2:
    """
    values[2].append(999)
    print(v) # [1, 2, 3, 999]
    """
    # 練習3:
    """
    v = 999
    print(values) # [11, 22, [1, 2, 3]]
    """
    # 練習4:
    values[2] = 666
    print(v) # [1, 2, 3]
  • 示例五

    v1 = [1,2]
    v2 = [2,3]
    
    v3 = [11,22,v1,v2,v1]
  • 查看內存地址

    """
    v1 = [1,2,3]
    v2 = v1
    v1.append(999)
    print(v1,v2)
    print(id(v1),id(v2))
    """
    
    """
    v1 = [1,2,3]
    v2 = v1
    print(id(v1),id(v2))
    v1 = 999
    print(id(v1),id(v2))
    """
  • 問題: == 和 is有什麼區別?

    v1 = [1, 2, 3, 4]
    v2 = [1, 2, 3, 5, 6]
    v1 == v2  ----> False
    v1 is v2  ----> False
    
    v1 = [1, 2]
    v2 = [1, 2]
    v1 == v2  ----> True
    v1 is v2  ----> False
    
    v1 = [1, 2, 3]
    v2 = v1
    v1 == v2  ----> True
    v1 is v2  ----> True
    • == 用於比較值是否相等。
    • is 用於比較內存地址是否相等。
相關文章
相關標籤/搜索