python数据类型

1、列表

  数据的集合,可以放任何数据,数据可重复。

        L1 = []
        L1 = ['a', 'b',]
        L1 = list()
创建
        age = [21,14,34,25,11]
            age[0] = 21, age[1] = 14
            age[-1] = 11, age[-2] = 25
            age.index(34) = 2(如果重复只取第一个找到的索引值)
            age.count(34) = 1,统计元素34的个数
            切片
            age[0:2] = [21,14](顾头不顾尾)
            age[-2:] = [25,11]
            age[:2] = [21,14]
            age[::2] = [21,34,11](这里的2是步长)
查找
        age = [21,14,34,25,11]
            age.append(22) = [21,14,34,25,11,22]
            age.insert(1,13) = [21,13,14,34,25,11,22]
            age[0] = 'abc'
                ->['abc',14,34,25,11]
            age[0:3] = "hell0"(批量修改)
                ->['h','e','l','l','o',25,11]
增加修改
    age=[21,14,34,25,11]age.pop(),删除最后一个,并返回删除元素,
        ->[21,14,34,25], 返回的结果是11
    age.remove(元素),若有相同的元素,删除从左到右找到的第一个元素
        ->[21,34,25,11]
    del age[2]
        ->[21,14,25,11]
    del age[:2](批量删除)
        ->[34,25,11]                
删除
        for i in age:
                print(i)
            ->21
            14
            34
            25
            11
        range(10)就是一个列表
            python2, [0,1,2,3,4,5,6,7,8,9]
            python3, range(0, 10)
        额外:
        enumerate(age)枚举函数
        for index,i in enumerate(age):
                print(index, i)
        ->0 21
            1 12
            2 34
            3 25
            4 11
循环
        age.sort(),返回结果None(元素是同类型数据,元素是字符串,按照ASCII表排序)
            ['a', 'c', 'b', 'd', 'ab', 'a#']-> ['a', 'a#', 'ab', 'b', 'c', 'd']
        age.reverse() 反序
排序
        L1+L2
        L1.extend(L2), 返回None,逐个添加,直接修改了L1
        L1*2
拼接

  题目: 使用切片实现反序:[1,2,3,4,5,6,7,8,1][::-1]

  复制(copy,deepcopy)

    copy:浅拷贝。只拷贝父对象,不会拷贝对象的内部的子对象

    deepcopy:深拷贝。拷贝对象及其子对象  

    图文理解

    copy
        1、
        a1 = [1,2,3,4]
        a2 = a1
        a1[0] = -1
            a1->[-1,2,3,4]
            a2->[-1,2,3,4]
        id(a1)和id(a2)相同,表示a1和a2共用一份数据
        2、
            a1 = [1,2,3,4]
            a2 = a1.copy()
            a1[0] = -1
                a1->[-1,2,3,4]
                a2->[1,2,3,4]
            id(a1)和id(a2)不相同,但id(a1[0])和id(a2[0])相同
        3、
            a1 = [1,2,3,4,[5,6]]
            a2 = a1.copy()
            a1[-1][0] = -5
                ->a1 = [1,2,3,4,[-5,6]]
                ->a2 = [1,2,3,4,[-5,6]]
            copy只能第一层复制,多层次复制使用deepcopy()
            import copy
            a2 = copy.deepcopy(a1)
            a1[-1][0] = -5
                ->a1 = [1,2,3,4,[-5,6]]
                ->a2 = [1,2,3,4,[5,6]]
代码示例

2、字符串  

        swapcase, 大写变小写,小写变大写
            s="Hello WORLD"
            s.swapcase() >>> "hELLO world"
swapcase
# 每个单词的首字母大写
"we are family.".title()
# 结果:"We Are Family."
title
        capitalize, 首字母大写
            s=“hello”
            s.capitalize() >>> 'Hello"
capitalize
        casefold, 变小写,== lower()
            s='HELlo'
            s.casefold() >>> 'hello'
casefold
        center(), 居中扩充
            s='hello'
            s.center(10, "*") >>> '**hello***'
center
        count(), 统计个数
            s='aaabbbbccddaabb'
            s.count('a') >>> 5
            s.count('a',2) >>> 3(从2开始统计)
            s.count('a',2, 7) >>> 1(2~7)
count
        endswith(), 以什么结尾
            s="hello'
            s.endswith('o') >>> True
            s.endswith('a') >>> False
        startswith(), 以什么开始
endswith,startswith
        expandtabs(),扩展字符串内的\t
            s="a\tb"
            print(s) >>> a       b
            print(s.expandtabs(20)) >>> a                   b
expandtabs
        find(), 从左查找,找到返回索引,再找不到返回-1
        rfind(), 从右开始
            s='hello'
            s.find('l') >>> 2
            s.find('a') >>> -1
        index(),返回第一个找到的索引,找不到报错
        rindex(), 从右开始
find,rfind,index,rindex
        format(), 格式化
            s='I am {0}, age is {1}'
            s.format('sun', 22)
            s = 'I am {name}, age is {age}'
            s.format(name='sun', age=22)
format
        isalnum(), 字母+数字
            “aa33”.isalnum() >>> True
            “aa33?”.isalnum() >>> False
        isalpha(),字母
            "aadd".isalpha() >>> True
            "aa22".isalpha() >>> False
        isdecimal(), 整数 = isdigit()
isalnum, isaipha,isdecimal,isdigit
        isidentifier() 判断变量名是否合法
            "3dd".isidentifier() >>> False
            "name".isidentifier() >>> True
isidentifier
        islower(),是否小写    
        isupper(),是否大写    
        isspace(), 是否是空格,"aa  ".isspace() -> False
        istitle(), 单词第一个字母是否大写
        isprintable(), 是否存在不可见不可显示的内容
        存在\n或\t等看不见的内容,为False
            "adifif\tdd".isprintable >>> False
islower,isupper,isspace,istitle,issprintable
        join()
            a=[1,2,3,4]
            "".join(a) >>> "1234"
            ",".join(a) >>> "1,2,3,4"
            "-".join(a) >>> "1-2-3-4"
join(重点)
        lower(), 变小写
        upper(), 变大写
        strip(),去两边不可见内容
        rstrip(),
        lstrip()
lower,upper,strip,rstrip,lstrip
        maketrans(),制作密码表,和translate配合使用
        str_in = "abcdef"
        str_out = "@#$%!&"
        table = str.maketrans(str_in, str_out)
        table >>> {97: 64, 98: 35, 99: 36, 100: 37, 101: 33, 102: 38}
        "badf".translate(table) >>> '#@%&'
maketrans,translate
        split(),拆分成列表
            s = 'hello world'
            s.split() >>> ['hello', 'world']
            s.split('o') >>> ['hell', ' w', rld']
            s.split('o',1) >>> ['hell', ' world']
        rsplit(),从右开始
        splitlines(),以行拆分

        partition(), 拆分 
            s.partition('o') >>> ['hell','o', 'world']
        rpartition(), 从右开始

        zfill(), 左补零
        'aa'.zfill(5) >>> '000aa'
split,rsplit,splitlines,partition,rpartition,zfill

 3、元组

   只读,不可修改

  特点:不可变,可以包含其他可变元素,这些元素可以修改,

    如:a=(1, 2, 3, [3, 4, 5]) ; a[3][0] = 5  >>>  (1, 2, 3, [5, 4, 5])

  声明:

    a = tuple()

    a = ()

    a = ("sun",)

  功能:

    index

    count

    切片

 4、字典

  python语言中唯一的映射类型。(映射类型就是一种关联式的容器类型,存储了对象与对象之间的映射关系。字典是由键到键值的映射关系)

  特征:

    key-value结构

    key,必须可hash,不可变类型,必须唯一

    value,可以存放任意多值,可修改,不唯一

    无序

    查找速度快

dic = {
            'k1': 'v1',
            'k2': 'v2',
            'k3': 'v3',
            'k4': 'v4',
    }

    增加:
        dic['k5'] = 'v5'

    修改
        dic['k4'] = 'value4'

    查找
        a = dic['k4'], 找不到报错
        ele = dic.get('k4'), 找不到返回None,
        ele = dic.get("abc", "not find"), 找不到返回"not find"

    删除
        dic.pop('k1')
        del dic['k1']
        dic.popitem(), 随机删除

    方法:
        dic.clear(), 清空
        dic.items(),>>> [('k1','v1'),('k2','v2'),('k3','v3'),('k4','v4')]
        dic.keys(), >>>  类的对象,可用于 for循环,list,__iter__()
        dic.values(), >>> 类的对象,可用于 for循环,list,__iter__()
        dic.update(),升级更新,有,覆盖,没有,添加
            dic1 = {1: 2, 3: 4, 'k1': 'new v1'}
            dic.update(dic1)
            >>> dic
            {'k1': 'new v1', 'k2': 'v2', 'k3': 'v3', 'k4': 'v4', 1: 2, 3: 4}            
        dic.setdefault(),有key,拿出value,没有,创建新的并返回value
            dic.setdefault(3, 4)
            >>> dic
                {'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'k4': 'v4', 3: 4}            
            dic.setdefault('k1', 4)
              "v1"
            >>> dic
                {'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'k4': 'v4'}            
        fromkeys(),批量生成一个字典
            {}.fromkeys([1,2,3], "a") >>>
                {1: 'a', 2: 'a', 3: 'a'}
增删改查及方法

5、hash

  一般称为‘散列’,把任意长度的输入,通过散列算法,变成固定长度的输出,这个输出就是散列值

  特征:hash值的计算过程是一句这个值的一些特征计算的,这就要求被hash的值必须固定,因此被hash的值是不可变的,如数字,字符串,元组

  用途:文件签名,MD5加密,密码验证

  例:hash("abc") >>> -3316206005911609992 

6、集合

  无序的,不重复的数据组合

  用法: 

    去重,把列表变成集合,会自动去掉重复的;关系测试

  定义:  s = {1};s = set()

        add(),增加    add(1)
        update(),增加 update([1,2,4])
        pop(),随机删除
        remove(元素),删除,没有报错
        discard(元素),删除,没有不报错
        clear()
增删改查
            intersection(),交集, = "&"
            difference(), = "-"
            A.difference(B),A的差集 = A-B
        union(), 并集 = "|"
        symmetric_difference,对称差集 = "^" 
            A.symmetric_difference(B) = (A|B) - (A&B), 属于A或属于B的一部分
        issuperset(),是否包含其他集合
        issubset(),是否属于子集
        isdisjoint(),是否不相交
        intersection_update(),把交集结果赋给集合
        difference_update(),
        symmetric_difference_update(),
关系测试

 

 

 

     

posted @ 2019-03-10 18:23  yw_sun  阅读(278)  评论(0)    收藏  举报