• python学习的第六天数据类型及内置方法part2


    一、元祖:就是一个不可变的列表

    1、用途:用于存放多个值,当存放的多个值只能读的需求没有改的需求时用元祖最合适

    2、定义方式:在()内用逗号分隔开多个任意类型的值

    # t=(1,)
    # print(t,type(t)

    3、常用的操作和内置的方法

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

    (2)切片(顾头不顾尾,步长)

    # t=('h','e','l','l','o')
    # res=t[1:3]
    # print(res)
    # print(t)

    (3)长度(len)

    (4)成员运算in和not in

    (5)循环

    # t=('h','e','l','l','o')
    # for item in t:
    #     print(item)

    4、总结:

    (1)存多个值

    (2)有序

    (3)不可变

    *掌握的方法

    索引元素的位置:对于没有的元素会报错

    t=('a','b','a')
    print(t.index('a'))                0

    二、字典

    1、用途:用来存放多个(不同种类的)值

    2、定义方式:用{}内用逗号 分隔开多个key:value的元素,其中value可以是任意数据类型,而key的功能通常是用来描述value的,所以key通常是字符串类型,但其实key必须是不可变的类型(int/float/str/tuple)

    3、常用操作和内置方法

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

    (2)长度len

    (3)成员运算in和not in

    (4)删除

    d={'x':1,'y':2,'z':3}
    # del d['y']
    # print(d)                                     无反值
    
    # res=d.pop('y')
    # print(d)
    # print(res)                                     有返值,是key对应的值
    
    # res=d.popitem()
    # print(res)                                     有返值,是key和其value

    (5)键key(),值value(),键值对items()

    d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
    # # print(d.keys())
    # print(list(d.keys()))
    # 
    # # print(d.values())
    # print(list(d.values()))
    # # print(d.items())
    # print(list(d.items()))

    (6)循环

    # for k,v in d.items(): #k,v=('name', 'egon')
    #     print(k,v)

    4、总结:

    (1)存多个值

    (2)无序

    (3)可变

    5掌握的操作:

    (1)get方法

    可以取值

    d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
    d.get(name)相当于d['name'}
    可以判定key在不在字典里面而不报错
    v=d.get('namexxxxxxx')
    print(v) None
    (2)updata方法:将一个字典合并到里面
    d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
    d.update({'x':1,'name':"EGON"})
    print(d) 

    {'name': 'EGON', 'age': 18, 'sex': 'male', 'hobbies': [1, 2, 3], 'x': 1}

    (3)fromkeys

    # fromkeys:需求是快速新造出一个字典,value的初始值全都为None,而key是来自于一个列表
    # keys=['name','age','sex']
    # # d={}
    # # for k in keys:
    # #     d[k]=None
    #
    # d={}.fromkeys(keys,None)
    # print(d)

    (4)按照默认的操作形式

    # d['x']=1111 # key存在则修改
    # d['z']=1111 #key不存在则新增
    # 按照setdefault的形式
    # d={"x":1,"y":2}
    # res=d.setdefault('x',11111) # 在key存在的情况下不修改值,会返回原值
    # print(d)
    # print(res)
    
    # res=d.setdefault('z',11111) # 在key不存在的情况下会新增值,会返回新增的值
    # print(d)
    # print(res)

    三、集合(set)

    1、什么是集合

    在{}内用逗号分隔开多个值,集合的特点

    (1)每个值必须是不可变类型

    (2)集合无序

    (3)集合内元素不能重复

    2、为何要用集合

    (1)用去做关系运算

    (2)去重

    3、如何用集合

    (1)集合的第一大用途:关系运算

    pythons={'egon','张铁蛋','李铜蛋','赵银弹','王金蛋','艾里克斯'}
    linuxs={'欧德博爱','李铜蛋','艾里克斯','lsb','ysb','wsb'}
    
    # 1 求同时报名两门课程的学生姓名:交集
    # print(pythons & linuxs)
    # print(pythons.intersection(linuxs))
    
    # pythons=pythons & linuxs
    # print(pythons) #{'李铜蛋', '艾里克斯'}
    # pythons.intersection_update(linuxs) #pythons=pythons.intersection(linuxs)
    # print(pythons) #{'艾里克斯', '李铜蛋'}
    
    # 2 求报名老男孩学校课程的所有学生姓名:并集
    # print(pythons | linuxs)
    # print(pythons.union(linuxs))
    
    # 3 求只报名python课程的学生姓名: 差集
    # print(pythons - linuxs)
    # print(pythons.difference(linuxs))
    # print(linuxs - pythons) #求只报名linux课程的学生姓名
    # print(linuxs.difference(pythons))
    
    # 4 求没有同时报名两门课程的学生姓名: 对称差集
    # print((pythons - linuxs) | (linuxs - pythons))
    # print(pythons ^ linuxs)
    # print(pythons.symmetric_difference(linuxs))
    
    # 5 父子集:指的是一种包含与被包含的关系
    # s1={1,2,3}
    # s2={1,2}
    # print(s1 >= s2)
    # print(s1.issuperset(s2))
    # print(s2.issubset(s1))
    # 情况一:
    # print(s1 > s2) #>号代表s1是包含s2的,称之为s1为s2的父集
    # print(s2 < s1)
    
    # 情况二:
    # s1={1,2,3}
    # s2={1,2,3}
    # print(s1 == s2) #s1如果等于s2,也可以称为s1是s2的父集合
    
    # 综上:
    # s1 >= s2 就可以称为s1是s2的父集

    交集(&)、并集(|)、差集(-)、对称差集(^)、父子集(包含和被包含关系)

    (2)集合的第二大用途:去重

    集合去重的局限性:

    #1会打乱原值的顺序(无序)

    #2只能针对不可变的值去重

    # stus=['egon','lxx','lxx','alex','alex','yxx']
    # new_l=list(set(stus))
    # print(new_l)
    #
    # old_l=[1,[1,2],[1,2]]
    # set(old_l)

    对于可变的值去重可以

    l=[
        {'name':'egon','age':18,'sex':'male'},
        {'name':'alex','age':73,'sex':'male'},
        {'name':'egon','age':20,'sex':'female'},
        {'name':'egon','age':18,'sex':'male'},
        {'name':'egon','age':18,'sex':'male'},
    ]
    # new_l=[]
    # for dic in l:
    #     if dic not in new_l:
    #         new_l.append(dic)
    # print(new_l)
    [{'name': 'egon', 'age': 18, 'sex': 'male'}, {'name': 'alex', 'age': 73, 'sex': 'male'}, {'name': 'egon', 'age': 20, 'sex': 'female'}]

    4、需要掌握的操作

    updata:增加值 

    s1={1,2,3}
    s1.update({3,4,5})

    pop删除

    s1.pop()

    5、总结

    存多个值

    无序

    set可变

  • 相关阅读:
    bzoj1103[POI2007]大都市meg
    bzoj1098[POI2007]办公楼biu
    bzoj1102[POI2007]山峰和山谷Grz
    POI刷题记录
    语法-指针
    dp-最长公共子序列
    如何判断素数
    C++的map用法
    stl-优先队列
    C++和Java的stack语法
  • 原文地址:https://www.cnblogs.com/ye-hui/p/9671178.html
Copyright © 2020-2023  润新知