美文网首页
day 8集合、函数基操

day 8集合、函数基操

作者: 遇见那天的雨真大 | 来源:发表于2018-11-14 20:43 被阅读0次

    1.字典(dict)

    1.什么是字典(dict)

    字典是python内置的容器类的数据类型,可变,无序的。****字典的元素是键值对

    2.字典的字面量{键:值}大括号里面是键值对,多个键值对里面 , 号隔开

    键值对:(键:值)
    键 - 不可变的数据;唯一的,一般使用字符串作为key
    值 - 没有要求

    dict0 = {(1,2):20,"aa":20}
    dict1 = {"name":"lorry","age":23,"hobby":["girls","spa"]}
    print(dict0)
    print(dict1)
    dict0 = {(1,2):20,"aa":20,"aa":200}
    print(dict0)
    dict1 = {"name":"lorry","age":23,"hobby":["girls","spa"]}
    print(dict1["name"])
    print(list(dict1.keys()))
    print(list(dict1.values()))
    print(list(dict1.items()))
    dict1.update(dict0)
    print(dict1)
    

    什么时候使用字典:如果一个容器里面存储的数据是不同意义的数据(数据之间要区分)

    dict1 = {"name":"lorry","age":23,"hobby":["girls","spa"]}
    dict1["name"] = "lorrbz"
    print(dict1)
    back = dict1.pop("name")
    print(dict1)
    dict1 = {"name":"lorry","age":23,"hobby":["girls","spa"]}
    aa = dict1.popitem()
    print(aa)
    print(dict1)
    print("name" in dict1)
    

    3字典的增删改查

    1.查
    • a.获取单个值
      字典[key] - 获取字典中key的值 如果key不存在,会报错。
      字典.get() - 获取字典中key对应的值,如果key不存在,则会返回空值none
      none 是Python中关键字,表示一个特殊值(没有,空的意思)
    dict1 = {"name":"lorry","age":23,"hobby":["girls","spa"]}
    print(dict1["name"],dict1.get("age"))
    print(dict1["hobby"])
    print(dict1.get("sex"))
    print("name" in dict1)
    
    • b.遍历 : 直接遍历字典拿到的是所有的key
    dict1 = {"name":"lorry","age":23,"hobby":["girls","spa"]}
    for key in dict1:
        print(key)
    # 同时获取key和value
    for key,value in dict1.items():
        print(key,value)
    for i in dict1.items():
        print(i)
    
    2. 增(添加键值对)

    字典[key] = 值 当key不存在的时候,就是在字典中添加键值对

    dict1 = {"name":"lorry","age":23,"hobby":["girls","spa"]}
    dict1["特长"] = "腿毛"
    print(dict1)
    
    3 更新。字典1.update(序列) - 将序列中的元素转换成键值对,然后再添加多字典1中

    当key值有重名的时候,会用序列中键值对应的值,更新原字典的key对应的值
    注意:这儿的序列要求是能够转换成字典的序列,序列中的元素是只有两个元素的序列

    dict2 = {"a":"lorry","age":23}
    dict3 = {"aa":"lorrybx","agea":2200}
    dict2.update(dict3)
    print(dict2)
    dict3.update([[1,2],["aa",10000000]])
    print("******",dict3)
    dict2 = {"a":"lorry","age":23}
    dict2.update([(1,2),("aaa",500),["lorry","sex"]])
    print("====",dict2)
    
    av_catalog = {
        "欧美":{
            "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
            "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
            "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
            "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
        },
        "日韩":{
            "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
        },
        "大陆":{
            "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
        }
    }
    av_catalog["欧美"]["www.youporn.com"][0] = "高清无码"
    print(av_catalog)
    
    4.删

    a.del 字典[key] - 删除字典中key对应的键值对
    b.字典.pop(key) 去除字典中key对应的值

    dict1 = {"name":"lorry","age":23,"hobby":["girls","spa"]}
    del dict1["name"]
    print(dict1)
    dict1 = {"name":"lorry","age":23,"hobby":["girls","spa"]}
    back = dict1.pop("age")   #删除键值对拿到的值,不信你打印
    print(dict1)
    print(back)
    dict1 = {"name":"lorry","age":23,"hobby":["girls","spa"]}
    print("***",dict1.keys())
    back2 = dict1.popitem()
    print(dict1,back2)  # 取出最后一个值
    

    c.字典.clear() 情况字典中元素。(删除字典中所有的键值对)

    dict1 = {"a":10,"b":50}
    dict1.clear()
    print(dict1)
    

    5字典的运算

    1.in 和 not in

    key in 字典 - 判断字典中是否存在指定的key

    dict1 = {"name":"lorry","age":23,"hobby":["girls","spa"]}
    print("name" in dict1)
    
    5.copy

    字典.copy() 复制字典中所有的键值对,产生一个新的字典。

    • 直接赋值会当字典改变时会相互影响
    dict1 = {"a":10,"b":50}
    dict2 = dict1
    print(dict2)
    print(dict1)
    dict1["a"] = 1000
    print("直接复制",dict2)
    print("直接复制",dict1)
    
    • 通过浅拷贝进行赋值后不会改变
    dict1 = {"a":10,"b":50}
    dict2 = dict1.copy()
    print(dict2)
    print(dict1)
    dict1["a"] = 1000
    print("浅拷贝dict2",dict2)
    print("浅拷贝dict1",dict1)
    
    6.dict.fromkeys()

    dict.fromkeys(序列,值) 序列中的元素作为key,值作为所有key对应的默认值。
    字典.get(keyt) —获取key对应的值,如果key不存在,返回none
    字典.get(key,值) —如果key不存在,返回指定的值

    dict3 = dict.fromkeys("abc",100)
    print(dict3)
    dict3 = dict.fromkeys(["name","age","height"],100)
    print(dict3)
    
    7.keys,values,items

    字典.key() - 获取字典所有的key —返回序列,序列的元素就是字典的key
    字典.values() - 获取字典所有的值 —返回序列,序列的元素就是字典的值
    字典.items() - 获取字典所有的键值对 - 返回序列,序列中的元素是元组,元组的中的元素是key和值。

    dict1 = {"a":10,"b":50,"c":"963"}
    keys = dict1.keys()   #返回值数序列。但不是列表
    print(keys,type(keys))
    for item in keys:
        print(item)
    print(dict1.values())
    print(dict1.items())
    
    8.setfault

    字典.setfault: 给字典添加键值对,如果key本来就存在,不会修改键值对。

    dict4 = {"x":23,"y":63,"p":986}
    dict4.setdefault("xx","lorry")
    print(dict4)
    dict4 = {"x":23,"y":63,"p":986}
    dict4.setdefault("x","96++66552232")
    print(dict4)
    

    2.集合

    1.什么是集合

    集合是Python内置的一个容器类的数据类型,是可变,无序
    字面量 - 使用{ }括起来,里面有多个元素
    元素 - 不是键值对,必须是不可变,而且还是唯一的(去重)

    set1 = {1,"hello",(1,3)}
    print(set1)
    set1 = {1,"hello",(1,3),1,True}
    print(set1)
    set2 = {}   #空字典
    print(type(set2))
    set3 = set()   #空集合
    print(type(set3))
    
    2.集合的增删改查
    • aa.查(获取集合元素)
      不能直接获取集合中单个元素,集合只能遍历
    set1 = {1,"hello",(1,3),1,True,"aa","bb"}
    for item in set1:
        print(item)
    
    • b.添加
      集合.add
      集合.updata -将序列中元素添加到集合中
    set1 = {1,"hello",(1,3),1,True,"aa","bb"}
    set1.add(10000000)
    print(set1)
    set1 = {1,"hello",(1,3),1,True,"aa","bb"}
    set1.update([10,20])
    print(set1)
    set1 = {1,"hello",(1,3),1,True,"aa","bb"}
    set1.update(range(10))
    print(set1)
    
    • c.删除
      集合.remove (删除集合中的元素)
    set1 = {1,"hello",(1,3),1,True,"aa","bb"}
    set1.remove("hello")
    print(set1)
    

    + * in not max min len set(需要自己实践)

    2.数学集合运算
    • 1 包含关系
      集合1 >= 集合2 判断集合1是否包含集合2(集合2是否是集合1的子集)
      集合1 <= 集合2 判断集合2是否包含集合1(集合1是否是集合2的子集)
    print({1,2,3} >= {1,2})
    print({1,2,3} >= {1,10})
    print({1,2,3} <= {1,10})
    
    • 2.求并集
      集合1 + 集合2 (相当于加法)
    set1 = {1,2,3,4}
    set2 = {4,5,6,7}
    set3 = set1 | set2
    print("并集:",set3)
    
    • 3.求交集
      集合1 & 集合2 ()求两个集合公共的元素
    set1 = {1,2,3,4}
    set2 = {4,5,6,7}
    set3 = set1 & set2
    print("交集:",set3)
    
    • 4.求差集
      集合1 - 集合2 ()将集合1中包含有集合2的元素除开,剩下的集合
    set1 = {1,2,3,4}
    set2 = {4,5,6,7}
    set3 = set1 - set2
    print("差积:",set3)
    
    • 5.求补集
      集合1 ^ 集合2 两个集合中除开公共元素以外的 部分
    方法一:
    set1 = {1,2,3,4}
    set2 = {4,5,6,7}
    set3 = set1 ^ set2
    print("补集:",set3)
    方法一:
    set4 = set1 | set2
    set5 = set1 & set2
    for item in set5:
        set4.remove(item)
    print("补集:::",set4)
    

    3.函数

    1.函数的定义

    • a.定义函数就是实现某一某一特定功能的代码段的封装。
    • b.分类
      函数可以分为内置函数和自定义函数
      内置函数:python已经声明好了,程序员直接调用的函数,print,input
      (相当于已经造好的机器,程序员只需要知道机器的功能和使用方法。)
      自定义函数:程序员自己用,程序员直接调用的函数,可以提供给别人用

    2.函数的声明

    语法:
    def 函数名(形象列表)
    函数说明文档
    函数体
    说明:
    def - python中声明函数的关键字
    函数名 - 自己命名,要求规范,标识符,不能是关键字
            pep8。名字中字母小写,多个单词之间用下划线隔开、
             见名知意(看到函数,大概知道函数的功能)
    () - 固定写法
    形参列表 - 形象名1,形象名2 ,,(可以有一个参数,也可以由多个参数,uekeyi没有)
           形参的作用:从函数外部,向函数内部传递数据    
    :- 固定写法
    函数说明文档 - 用来对函数功能进行说明的注释。这个注释需要使用三个双引号引起来。
    函数体 - 实现函数功能的代码段。
    c.初学者函数声明的过程
    第一步:确定函数功能
    第二部:根据函数功能确定函数名。
    第三部:确定参数列表,需不需要传递额外的数据
    第四部:实现函数的功能
    第五步:确定返回值
    
    def save_sum(a,b):
        sum_ab = a+b
        print(sum_ab)
    save_sum(10,20)
    save_sum(100,200)
    
    
    def dayin_xing(n):
        print("*"*n)
    dayin_xing(10)
    # 声明一个函数求1+2+3+...n
    
    
    def sum_n(n):
        sum1 = 0
        for i in range(n+1):
            sum1 += i
        print(sum1)
    sum_n(3)
    

    3.函数的调用

    (重点)函数在声明的时候,不会执行函数体,只有在调用的时候才会执行。
    a.语法:
    函数名(实参列表)
    
    b.说明:
    函数名 - 已经声明过的函数。先声明才能调用。
    () - 固定写法。
    实参列表 - 实参就是给形参赋值,传递给函数内部的数据
    目前来说  形参有多少,实参有多少。
    

    相关文章

      网友评论

          本文标题:day 8集合、函数基操

          本文链接:https://www.haomeiwen.com/subject/vxdsfqtx.html