Python【day 15-2】基本數據類型-dict tuple set

''''''
'''
變量的數據類型
int str bool list
五、字典 dict
    定義和寫法:由{}表示,每一個元素是key:value的鍵值對形式,元素間是逗號隔開
    特色:
        一、key是可哈希的-不可變類型(好比:int str tuple bool)
            value的類型是不限制的,能夠存聽任意數據類型
        二、字典是無序的,沒有索引和切片
    常見操做:
        增
            一、dic[key] = value   #單個鍵值對添加,先創建一個空字典
            二、dic = {k1:v1,k2:v2} #一次添加多個鍵值對-字典的定義
            三、ret= dic.setdefault(key,value) #若是key已經存在,不會覆蓋
               #添加鍵值對,返回添加的value
            四、dic2 = dic.fromkeys(iterable,value) #iterable中每一個元素共用一個value
               dic2 = dict.fromkeys(iterable,value)  #類方法
                #注意點1:會新產生一個新字典,原字典自己不會改變
                #注意點2:fromkeys是一個類方法

        刪
            一、pop
                參數是key,刪除key對應的元素-鍵值對,而且獲取被刪除元素的value
            二、popitem
                參數是空,隨機刪除一個元素-鍵值對,而且獲取被刪除元素-鍵值對
                注意:從表面看,是刪除了字典的最後一個鍵值對,可是字典的key是無序的,全部仍是隨機的
            三、del
                一、參數是key,刪除key對應的元素-鍵值對
                二、還能夠直接刪除整個字典,回收內存空間
            四、clear
                清空字典的元素-鍵值對,變成空字典
        改
            1 dic[key] = 新value
                根據key獲取到字典的value,對value進行從新賦值
            2 update
                dic1.update(dic2)
                把字典2的元素依次添加到字典1
                注意:若是字典2的key和字典1的key有相同的,會出現value的覆蓋
        查-取值
'''
'''
            1 dic[key]
                根據自定的key取value值,若是key不存在,就報錯
            2 get
                寫法:字典.get(key[,value])
                參數1是key,參數2是默認返回值(不寫默認是None)
                一、若是key存在,就返回字典中key對應的value
                二、若是key不存在,不會報錯,會返回參數2(參數2不寫默認是None)
                    這一點上,健壯性強於dic[key]來取值
            3 setdefault  添加元素,並取值元素的value(key若是已經存在,不會覆蓋)
                寫法:字典對象.setdefault(key1,value1)
                參數1是新增長元素的key,參數2是新增長元素-鍵值對的value
                一、將參數1和參數2做爲新元素-鍵值對添加到字典對象
                    原字典對象添加了一個新元素-鍵值對
                二、返回者是參數2,即獲取新增長的value做爲返回值-這個返回value1就是取值
                    (和pop的刪除並返回被刪除值有相似之處,
                      setdefault是添加並返回添加的value)
                三、若是key1已經在原字典對象中存在了,新的鍵值對將沒法添加,原字典對象保持不變
                    這裏不會覆蓋原字典對象的value
                    注意點:不會覆蓋這個點和dic[key]=value,若是key已經存在,會覆蓋,是不一樣的

        字典for循環:
            一、iterable
                dic1 dic1.keys() dic1.values()
            二、for i in dic1:
                   print(i,dic1[i])

                for i in dic1.keys():
                    print(i,dic1[i])  #用的比較少

                for i in dic.values():
                    print(i)  #適用場景:好比求value的平均值

                for i in dic1.items():
                    print(i)  #這裏返回是列表,列表的元素是鍵值對元組 (k1,v1)

                for k,v in dic1.items():
                    print(k,v)

6 元組--tuple
    一、元組是隻讀的,不可變
        不可變的是元組的第一層
        若是元組的元素是列表,列表是能夠添加刪除元素的
    二、操做方法比較的少
        count()
        index()
        len()
    三、iterable-可迭代的
        支持for循環
        (for循環的取值速度:dict>set>list>tuple)
    四、元組是沒有元組推導式的

7 集合-set
    一、集合的概念:只有key的字典
    二、特色:
        無序
        去重
        元素是不可變的(可哈希的)--由於字典的key是不可變的
    三、支持for循環,iterable
    四、可凍結的集合 frozen
        特色:frozen自己是不可變的(可哈希)
    五、操做
        兩個集合之間能夠& | -  (交集&、並集|、差集)等
    六、備註:
        set不能做爲字典的key
        frozetkey做爲字典的key
'''
'''''
'''
1、條件判斷、循環
1 條件判斷if
    if 條件:
        代碼塊(語句塊)
    elif 條件:
        代碼塊
    elif 條件:
        代碼塊
    。。。
    else:
        代碼塊
2 循環
    1 while循環(條件循環)
        while 條件:
            循環體
            break (結束整個循環-本層,若是是2層循環,只能跳出1層,不能跳出2層)
            continue(結束本次循環-迭代,繼續執行下一次循環)
        else:
            pass #當上面的while正常結束後(條件是False的時候,沒有出現break),才執行這個語句

    2for循環--主要用於循環遍歷取值

3 print
    print(message,end='\n',sep=' ')
    參數1:打印輸出的信息
    參數2:行結束符,不寫默認是換行 \n
    參數3:分隔符,不寫默認是空格
           注意點:打印2個及以上元素,纔會用到分隔符,打印一個元素,是用不到分隔符的

4 input  用戶交互
5 range
    range(start,end,step) --range和切片的區別,分隔符不一樣,前者是逗號,後者是冒號
    #step不寫,默認是1
    切片:li1(start:end:step)

6 文件路徑的分隔符
    win  \   反斜槓-捺槓  \還表示轉義 \t \r \n
    linux /  順斜槓-撇槓

2、運算符
1、算數運算符
    + - * / // % **

2、比較運算符
    > >= < <= == !=

3、邏輯運算符
    and-與  兩個同時爲真,結果纔是真
    or-或   兩個中有一個是真,結果就是真
    not-非  非假即真 非真即假

    優先級順序:  小括號() >not > and >or

    a and b
        若是a不是0,返回b
        若是a是0,返回a

    a or b
        若是a不是0,返回a
        若是a是0,返回b

4、賦值運算符
    += -= *= /= %=
    a+=b 等價於 a = a+b

5、成員運算符
     x in xx
     好比:判斷列表或者字典的元素

六、is和==
    is比較的是內存地址
    ==比較的是值
    小數據池:int str bool這三種類型的對象建立以後,符合規則的,會被緩存到小數據池
              下次直接從小數據池中調用,從而節省內存
              好比:a1='jack'  a2='jack'
              在建立變量a1的時候,會新開闢一個內存空間,這個內存空間的名字是a1,裏面的值存的是'jack'
                    且把這個內存空間緩存到小數據池子中
              在建立變量a2的時候,不會新開闢另一個內存空間,而是把a2指向'jack'所在的內存地址
              即a1和a2的內存地址是同樣的

7、文件操做
    open(文件路徑,mode='模式',encode='編碼')
    模式: r w a r+ w+ a+ rb wb ab
    for循環能夠迭代文件句柄,拿到的是一行一行的內容
    seek(0,0) #光標移到文件開頭  參數1是偏移量 參數2中:0表示文件開頭,1表示文件當前位置,2表示文件末尾
    seek(0,2) #光標移到文件末尾
    seek(0,1) #光標移到當前位置
    tell()  #打印光標的當前位置

    with open(文件路徑,mode='模式',encode='編碼') as f:
        pass   #不須要flush和close

    文件修改:
        打開源文件,從源文件中讀取內容到內存,修改,而後將內容寫入到新文件。
        刪除源文件,把新文件重命名成源文件的名字
相關文章
相關標籤/搜索