第二篇 Python數據類型、字符編碼、文件處理

一、引子

    1、什麼是數據?

        x=10,10是我們要存儲的數據

    2、爲何數據要分不同的類型

        數據是用來表示狀態的,不同的狀態就應該用不同的類型的數據去表示

    3、數據類型的分類

        數字(×××,長×××,浮點型,複數)

        字符串 (在介紹字符編碼時介紹字節bytes類型)

        列表

        元組

        字典

        集合

    4 按照以下幾個點展開數據類型的學習

        1)基本使用

            (1)用途

            (2)定義方式

            (3)常用操作+內置的方法

        2)該類型總結

            (1)存一個值or存多個值

                    只能存一個值

                    可以存多個值,值都可以是什麼類型

            (2)有序or無序

            (3)可變or不可變

                    !!!可變:值變,id不變。可變==不可hash

                    !!!不可變:值變,id就變。不可變==可hash


二、數字

    1、整型int

        作用:年紀,等級,×××號,qq號等整型數字相關

        定義:age=10  #本質age=int(10)

    2、浮點型float

        作用:薪資,身高,體重,體質參數等浮點數相關

        定義:alary=3000.3 #本質salary=float(3000.3)

    3、二進制,十進制,八進制,十六進制 

            參考鏈接:http://blog.51cto.com/10630401/2049374

    4、其他數字類型(瞭解)

        1)長×××    在python2中(python3中沒有長×××的概念) num=2L

        2)複數    x=1-2j

    5、數字類型小結

        1)存一個值

        2)有序

        3)!!!不可變:值變,id就變。不可變==可hash


三、字符串

    1、作用:名字,性別,國籍,地址等描述信息

    2、定義:在單引號\雙引號\三引號內,由一串字符組成

         name='egon'

    3、常用操作+內置的方法:

        1)優先掌握的操作:

            (1)按索引取值(正向取+反向取):只能取(不可修改,取出的字符還是字符串類型,空格也佔一個索引)

                str[開頭的索引值:結尾的索引值:步長]

            (2)切片(顧頭不顧尾,步長)

            (3)長度len (等同於調用這個方法str.__len__())

            (4)成員運算in和not in(結果是布爾值)

            (5)移除空白strip(只能移除字符串左右兩端的空白格)

                日常用法:password=input('>>: ').strip() 

            (6)切分split 

                默認是空格符做切割符號,不指定切割次數的話,整個字符串都會切

                rsplit是按照倒序的方式切割

            (7)循環

                逐個取出字符串中的字符、range(頭,尾,步長)

        2)需要掌握的操作

            (1)strip,lstrip,rstrip

                strip默認是移除空白,非空格的需要指定;lstrip是移除左邊的;rstrip是移除右邊的;

            (2)lower,upper

                lower是把字符串中的大寫字母轉換成小寫,upper是小寫換成大寫

            (3)startswith,endswith

                判斷字符串是否是以什麼開頭或者結尾,結果是布爾值

            (4)format的三種玩法

                佔位符是{} 

print('this is {} this is a {}'.format('test','pen'))

            (5)split,rsplit

            (6)join

                只有在列表內的元素全是字符串類型,才能用join拼接

                用split切割完以後是一個列表,每個元素都是字符串,可以採用join拼接  

info='root:x:0:0'
l=info.split(':')
print(l)
print(':'.join(l))

            (7)replace

            (8)isdigit

        3)其他操作(瞭解即可)

            (1)find,rfind,index,rindex,count

            (2)center,ljust,rjust,zfill

            (3)expandtabs

            (4)captalize,swapcase,title

            (5)is數字系列

            (6)is其他

    4、字符串類型小結

            1)存一個值

            2)有序

            3)  !!!不可變:值變,id就變。不可變==可hash

    

四、列表

    1、作用:多個裝備,多個愛好,多門課程,多個女朋友等

    2、定義:[]內可以有多個任意類型的值,逗號分隔

        變量l= list('字符串')

        l=list('hello')

        print(l)

                ['h', 'e', 'l', 'l', 'o']

    3、常用操作+內置方法

        1)優先掌握的操作:

            (1)按索引存取值(正向存取+反向存取):即可存也可以取      

            (2)切片(顧頭不顧尾,步長)

            (3)長度

            (4)成員運算in和not in

            (5)追加append (會追加在最後一個索引的後邊)

            (6)刪除:直接刪除del、remove;刪除並拿到結果pop;

                    del list[索引]

                    list.remove('列表中的元素')

                    list.pop(索引)  能打印出刪除的那個元素

            (7)循環

                循環取出列表中的元素

l1=['a','b','c','d']
for i in range(len(l1)):
     print(l1[i])

        2)需要掌握的操作:

            (1)insert(插到哪個索引值前面,插入的值)

            (2)clear() python2 沒有這個方法

            (3)copy() python2 沒有這個方法

            (4)count() 統計列表中的某個元素的次數

            (5)extend() 列表的拼接擴展,(裏面可以寫另一個列表名或者一個字符串)

            (6)index(元素) 查找某個元素的索引值

            (7)reverse()  把列表顛倒過來

            (8)sort() 排序 默認的是從小到大;list.sort(reverse=True)可以實現從大到小

        3)其他操作(瞭解即可)

    4、列表類型總結

        1)可以存多個值,值都可以是任意類型

        2)有序

        3)!!!可變:值變,id不變。可變==不可hash


五、元組

    1、作用:存多個值,對比列表來說,元組不可變(是可以當做字典的key的),主要是用來讀

    2、定義:與列表類型比,只不過[]換成()   

    變量名=tuple(字符串)

    age=tuple('hello')

    print(age,type(age)

    3、常用操作+內置方法

        1)優先掌握的操作:

            (1)按索引取值(正向取+反向取):只能取   

            (2)切片(顧頭不顧尾,步長)

            (3)長度

            (4)成員運算in和not in

            (5)循環

        2)需要掌握的操作

            (1)index

            (2)count

    4、元組類型總結

        1)可以存多個值,值都可以是任意類型

        2)有序

        3)!!!不可變:值變,id就變。不可變==可hash

    

六、字典

    1、作用:存多個值,key-value存取,取值速度快

    2、定義:key必須是不可變類型,value可以是任意類型

        info={'name':'egon','age':18,'sex':'male'} #本質info=dict({....})

        或info=dict(name='egon',age=18,sex='male')

        或info=dict([['name','egon'],('age',18)])

        或{}.fromkeys(('name','age','sex'),None)

    3、常用操作+內置方法

        1)優先掌握的操作:

            (1)按key存取值:可存可取

            (2)長度len (統計鍵值對的個數)

            (3)成員運算in和not in (結果是布爾值)

            (4)刪除

                d.pop('a') #輸出的是刪除的key對應的value值

                d.popitem() #輸出的是刪除的key對應的key:value鍵值對

            (5)鍵keys(),值values(),鍵值對items()

            (6)循環

info = dict(name='egon', age=18, sex='male')
for key in info:
    print(info[key])

for items in info:
    print(items)

    4、字典類型總結

        1)可以存多個值,值都可以是任意類型

        2)無序

        3)!!!不可變:值變,id就變。不可變==可hash

                    

七、集合 set

    1、作用:去重,關係運算

    2、定義:可以包含多個元素,用逗號分割

         s=set({元素需爲不可變類型})

            集合的元素遵循三個原則:

             1、每個元素必須是不可變類型(可hash,可作爲字典的key)

             2、沒有重複的元素

             3、無序

    PS:注意集合的目的是將不同的值存放到一起,不同的集合間用來做關係運算,無需糾結於集合中單個值

    3、常用操作+內置的方法:

        1)優先掌握的操作:

            (1)長度len

            (2)成員運算in和not in

            (3)|合集 intersection

            (4)&交集 union

            (5)-差集 symmetric_difference

            (6)^對稱差集 difference

            (7)==

            (8)父集:>,>=  issuperset

            (9)子集:<,<=  issubset

            (10)循環

        2)瞭解的操作:

            (1)集合1.difference_update(集合2) 

                s1.difference_update(s2) #s1=s1.difference(s2)

            (2)集合1.pop() 默認刪除的是集合的最後一個元素

            (3)集合1.add()  默認添加的元素是到集合的最後面

            (4)刪除集合元素 

                discard()  刪除的元素不存在不會報錯

                remove()  刪除的元素不存在則報錯

            (5)集合1.isdisjoint(集合2) 兩個集合沒有共同部分時,返回值爲True

            (6)集合.update({})  一次可以增加多個元素

    4、集合類型小結

            1)存多個值

            2)無序

            3)    !!!不可變:值變,id就變。不可變==可hash


八、數據類型總結!!!!!

    1、按存儲空間的佔用分(從低到高)

        數字

        字符串

        集合:無序,即無序存索引相關信息

        元組:有序,需要存索引相關信息,不可變

        列表:有序,需要存索引相關信息,可變,需要處理數據的增刪改

        字典:無序,需要存key與value映射的相關信息,可變,需要處理數據的增刪改

    2、按存值個數區分

        標量/原子類型: 數字,字符串

        容器類型:列表,元組,字典

    3、按可變不可變區分

        可變:列表,字典

        不可變: 數字,字符串,元組

    4、按訪問順序區分

        直接訪問:數字

        順序訪問(序列類型):字符串,列表,元組

        key值訪問(映射類型):字典

        

九、字符編碼

    http://blog.51cto.com/10630401/2312336


十、文件處理

    http://blog.51cto.com/10630401/2050716


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章