• 【python笔记】第七节 散列类型与格式化输出


    💕💕💕 博主昵称:摆烂阳💕💕💕

    🥰博主主页跳转链接
    👩‍💻博主研究方向:web渗透测试 、python编程
    📃 博主寄语:希望本篇文章能给大家带来帮助,有不足的地方,希望友友们给予指导

    ————————————————
    在这里插入图片描述


    )

    一、散列类型

    1.数值类型:int float bool -> 存储一个数值

    2.序列类型:str list tuple -> 存储多个元素

    3.散列类型:set dict

    散列类型的特征:

    1. 无序 =》无下标

    2. 内部元素不重复

    1、 集合(set)

    1.1 概念

    集合(set) -> 负责存储【不重复的数据】,并且是【无序存储】的容器,主要用来去重和逻辑比较

    1.2 性质

    唯一性:元素唯一存在,不能重复

    可变性:同列表意义,集合可以通过一些方法进行修改操作

    无序性:集合没有办法访问或者操作指定位置的元素。

    创建集合直接使用 {}

    set1 = {1, 2, 3, 4, 1, 2, 6, 5, 7, 7, 7, 9, 8, 2, 8}
    print(set1)  # 正常输出一个集合,里面的数据默认去重
    print(set1[1]) # 散列类型无序的,不可以通过下标提取元素,报错
    print(type(set1))
    
    • 1
    • 2
    • 3
    • 4

    语法:

     集合名 = {数据1,数据2,数据3,....} # 如果有重复数据,不会被添加到内存空间里面
    
    • 1

    注意:创建空集合的时候必须使用 set() ,而不能{},{}是表示空字典

    集合的基本操作 --》 去重

    li = [1, 2, 3, 4, 1, 2, 6, 5, 7, 7, 7, 9, 8, 2, 8]
    利用集合帮助列表去重
    se = set(li) # list->set 利用集合的唯一性去重
    li = list(se) # 再将set-> list
    print(li)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    快速写法

    li = list(set(li))
    print(li)
    
    • 1
    • 2

    1.3 运算

    运算操作Python运算符含义
    交集&取两集合公共的元素
    并集|取两集合全部的元素
    差集-取一个集合中另一集合没有的元素
    成员运算in 和 not in判断一个某个元素是否在或者不在集合中

    集合可以进行逻辑判断,集合的运算

    集合1 & 集合2 --》判断交集   # shift + 7
    集合1 | 集合2 --》判断并集   # sfhit + \
    集合1 - 集合2 --》判断差集
    
    • 1
    • 2
    • 3

    交集:两个集合里面共有的数据
    并集:两个集合里面的全部数据
    差集:集合1 - 集合2 【集合1中减去和集合2共有的元素】【去掉交集之后的,结果就是差集】

    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    
    • 1
    • 2

    & 交集:取两个集合的公共元素

    print(set1 & set2)  # {3}
    
    • 1

    | 并集:取两个集合的全部元素

    print(set1 | set2)
    
    • 1

    - 差集:减掉共有的

    print(set1 - set2) # 以set1为全集,减去set1和set2共有的 12
    print(set2 - set1) # 以set2为全集,减去set1和set2共有的 45
    
    • 1
    • 2

    集合的作用:

    1.存储非重复数据
    2.用于将序列类型去重,逻辑判断(交集,并集,差集)

    1.4 方法

    add():参数为要添加的对象,通过多次添加数据可以发现添加后的元素位置不确定

    s = {"111"}
    s.add("222") 
    print(s)
    s.add("333") 
    print(s)
    s.add("444")
    print(s)
    s.add("555") 
    print(s)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    update() 参数为序列类型,会将序列元素拆分,随机添加到集合中

     s = {"111"}
        
        lis = ['111', '222', '333', '444']
        
        s.update(lis)  # 将lis拆分,并随机插入
        
        print(s)
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    pop() : 删除第一个元素

    仅在cmd运行时候,才会随时删除,pycharm对元素的地址进行了加强。所以python中默认保持删除第一个元素

    remove(): 有参数,参数为要删除的元素,如果元素不存在则报错

       ```python
        s = {"111"}
        s.add("222")  
        print(s)
        s.add("333")  
        print(s)
        s.add("444") 
        print(s)
        s.add("555") 
        print(s)
        
        s.remove("222") 
        s.remove("111") 
        print(s)
        ```
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    clear():清空集合中的元素

    2、字典(dict)

    2.1 概念

    字典(dict)是用来保存一些有典型的 ”对应关系“ 的数据类型,特点就是用键值对的方式来存储数据

    键值对:key:value

    字典的表现形式:

    字典和集合一样也是用花括号,不过花括号里面如果存储的 键值对(说明关系的数据),那么它就是字典。

    字典相比其他容器更适合描述一个对象

    字典的创建语法格式

    字典名 = {键名1:, 键名2:, .....} # 里面写的都是键值对
    
    • 1

    通讯录的存储

    call = {
        "aaa": 10086,
        "bbb": 10010,
        "ccc": 10000,
        "ddd": 12010
    }
    表示个人名片
    nr = {
        "姓名": "aaa",
        "年龄": 18,
        "工作": "摆烂"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    字典的访问方式:

    字典只能通过key去查询value

    字典名[键] # 跟列表相似,但是列表是下标,字典是键

    2.2 性质

    1.无序没下标,字典是直接通过键值对的方式存储数据的,所以通过键来取值
    字典名[键]
    2.不重复字典的键是不能重复

    dict2 = {"a": 1, "b": 2, "c": 3, "c": 4}
    print(dict2) # 默认会覆盖,取最后一个键
    
    • 1
    • 2

    3.可变性:字典里面的数据是可变的,而且允许嵌套

      dict2 = {"a": 1, "b": 2, "c": 4}
        dict2['b'] = 100  # 直接赋值,修改
        print(dict2)
        dict2['b'] = ["bai","lan"]   # value还可以是 别的容器
        print(dict2)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.3 方法

    直接赋值

      zd = {"a": 1, "b": 2}
      zd["c"] = 3 # 直接赋值增加
      zd["d"] = 4 # 直接赋值增加
      print(zd)
    
    • 1
    • 2
    • 3
    • 4

    直接赋值

      zd = {"a": 1, "b": 2 ,"c": 3}
      zd["c"] = 6 # 直接赋值 , 如果原本已经有了,那就是改,没有就是增
      zd["d"] = 7 # 增
      print(zd)
      
    
    • 1
    • 2
    • 3
    • 4
    • 5

    pop(键名) : 根据指定的键名,删除键值对

       zd.pop("a") # 通过键名删除键值对
          print(zd)
          
          
      clear() : 清空字典,将字典变为空字典
          zd.clear()
          print(zd) # 空字典
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    get() : 通过键名,获取值

      	d = {"a": 1, "b": 2}
        # print(zd["c"])  # 如果键不存在会报错
      	print(zd.get("c"))  # 如果键不存在不会报错
      
    
    • 1
    • 2
    • 3
    • 4

    keys() : 获取所有的键,返回一个伪列表
    values() : 获取所有的值,返回一个伪列表

     zd = {"a": 1, "b": 2}
      
      print(zd.keys())  # ["a","b"]
      for i in zd.keys(): # 遍历key
          print(i)
      
      print(zd.values())  # [1,2]
      for i in zd.values():  # 遍历value
          print(i)
      
      
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    都是无下标,不可重复

    二、字符串格式化

    方便字符串里面携带变量

    1、%方法(占位符)

    在程序开发时候,有的时候不确定使用的数据具体是啥,就先占用一个位置,后续再使用值来填充

    %也是分为不同种类型的

    常见的占位符

    %s = 字符串 =》占了一个位置,只能放字符串
    %d = 整数 =》占了一个位置,只能放整数
    %f = 小数=》默认保留6位小数点
    %.1f -->保留一位小数
    %.2f -->保留二位小数
    %.xf -->保留x位小数

    s = "我叫%s,我今年%d岁,体重是%.2f"  # 模板
    print(s % ("111", 18, 155.5))
    print(s % ("222", 19, 90.5))
    print(s % ("333", 30, 13.5))
    # 可以无限使用s这句话,不用再重复写,只需要提供数据即可
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2、f-format

    语法:在字符串前面加上f/F,把要输出的变量用大括号{}进行包囊

    name = "摆烂阳"
    age = 18
    height = 177.7
    
    # 大括号里面的数据,还可以直接操作
    print(f"大家好,我叫{name[0]},我今年{age+1}岁,今年身高{height-1}")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    其他

    name = "摆烂阳"
    age = 18
    height = 177.7
    
    # 字符串的方法 format 了解即可
    print("大家好,我叫{},我今年{}岁,今年身高{}".format(name,age,height))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    本章小结

    本文是本人以前笔记,博主主页跳转链接如果有哪里不对的话欢迎各位大佬指出问题,本人也是初学python,希望可以和各位朋友一起学习进步。

    点击跳转到博主python专栏:
    如果有喜欢web安全的朋友,请在web渗透专栏中进行查看,点击跳转到博主web渗透专栏

  • 相关阅读:
    浏览器里玩机器学习、深度学习
    read系统调用源码分析
    SQLZOO:SELECT from WORLD
    栅极驱动器SCT52240STDR ,SCT51240TWBR
    python中protobuf和json互相转换应用
    EDI系统如何恢复历史映射关系?
    网课查题接口API调用 独立后台控制
    JAVA计算机毕业设计高校毕业生就业满意度调查统计系统Mybatis+源码+数据库+lw文档+系统+调试部署
    Python最基础的五个部分代码,零基础也能轻松看懂。
    【C语言】通讯录《静态内存版本》
  • 原文地址:https://blog.csdn.net/qinshuoyang1/article/details/126456841