第二篇 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/2050540


十、文件处理

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


猜你喜欢

转载自blog.51cto.com/10630401/2312313