【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,....} # 如果有重复数据,不会被添加到内存空间里面

注意:创建空集合的时候必须使用 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)

快速写法

li = list(set(li))
print(li)

1.3 运算

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

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

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

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

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

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

print(set1 & set2)  # {3}

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

print(set1 | set2)

- 差集:减掉共有的

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

集合的作用:

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)

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

 s = {"111"}
    
    lis = ['111', '222', '333', '444']
    
    s.update(lis)  # 将lis拆分,并随机插入
    
    print(s)
    

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)
    ```

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

2、字典(dict)

2.1 概念

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

键值对:key:value

字典的表现形式:

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

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

字典的创建语法格式

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

通讯录的存储

call = {
    "aaa": 10086,
    "bbb": 10010,
    "ccc": 10000,
    "ddd": 12010
}
表示个人名片
nr = {
    "姓名": "aaa",
    "年龄": 18,
    "工作": "摆烂"
}

字典的访问方式:

字典只能通过key去查询value

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

2.2 性质

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

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

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

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

2.3 方法

直接赋值

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

直接赋值

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

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

   zd.pop("a") # 通过键名删除键值对
      print(zd)
      
      
  clear() : 清空字典,将字典变为空字典
      zd.clear()
      print(zd) # 空字典

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

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

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、%方法(占位符)

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

%也是分为不同种类型的

常见的占位符

%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这句话,不用再重复写,只需要提供数据即可

2、f-format

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

name = "摆烂阳"
age = 18
height = 177.7

# 大括号里面的数据,还可以直接操作
print(f"大家好,我叫{name[0]},我今年{age+1}岁,今年身高{height-1}")

其他

name = "摆烂阳"
age = 18
height = 177.7

# 字符串的方法 format 了解即可
print("大家好,我叫{},我今年{}岁,今年身高{}".format(name,age,height))

本章小结

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

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

  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摆烂阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值