python基础(七)散点类型与格式化输出

目录

1.1 散列类型(哈希类型)

1.2 集合 set

1.2.1 概念

1.2.2 性质 

 1.2.3 运算

 1.2.4 方法

1.3 字典 dict

1.3.1 概念

 1.3.2 性质

1.3.3 方法

2.1 格式化输出

2.1.1 %方法(占位符)

2.1.2 format()方法

2.1.3 f-format()

 3.1 小练习

4.1 解析


1.1 散列类型(哈希类型)

数值类型:
	int,float,bool   -> 存储一个数值
序列类型:
	str,list,tuple   -> 存储多个数据
散列类型:
	1.无序   【散列类型没有下标】
	2.内部元素不重复

1.2 集合 set

1.2.1 概念

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

1.2.2 性质 

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

可变性:同列表一样。集合可以通过它的一些方法进行修改操作

无序性:无下标,无顺序

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

语法:
    集合名 = {数据1,数据2,数据3.....} # 如果有重复的,是不会被添加到内存空间里面
    
ps:创建空集合的时候必须使用set() 而不能直接{} ,{}默认是空字典
li1 = [] # 空列表
tu1 = () # 空元组
str1 = "" # 空字符串
dict1 = {} # 空字典
set1 = set() # 空集合

集合的基本操作 --》去重
li = [1, 2, 3, 4, 5, 6, 6, 6, 6, 7, 8, 9, 9, 9]
# 快速写法
li =  list(set(li))

 1.2.3 运算

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

交集:两个集合里面共同拥有的数据
并集:两个集合里面的全部数据(不包括重复数据)
差集:差集1 - 差集2 减去共有部分,剩下的就是差集【去掉交集之后就是差集】

# & 交集  取两个集合的公共元素
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1 & set2)  # 获取公共部分

# | 并集,取两个集合的全部元素,结果会去重
print(set1 | set2)

# - 差集 
print(set1 - set2)

- 小练习
碗A {炸鸡,青菜,小龙虾}
碗B {臭豆腐,青菜,螃蟹}
交集:两个碗里面都有的菜,就是交集  =》 青菜
并集:两个碗里面的菜种类加在一起,就是并集 =》炸鸡,青菜,小龙虾,臭豆腐,螃蟹
差集:将和另一个碗共有的菜减掉
	碗A - 碗B ==>  炸鸡,小龙虾
    碗B - 碗A ==>  臭豆腐,螃蟹
    
注意:集合不能放列表

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

 1.2.4 方法

集合的方法都是作用效果于原集合

- add() : 参数为要添加的对象,通过多次添加数据可以发现添加后的元素位置不确定
    
- update() : 参数为序列类型,会将每一个元素拆分后随机添加集合中
    

s = {"华为"}
s.add('小米') # add 是往前面添加
print(s)
s.add("苹果")
print(s)
s.update("123")
print(s)

 删

```python
pop():随机删除一个元素  # pycharm中默认从左开始删
    # 实际上在进行代码实验的时候并不是随机的,默认从左开始删
    # 仅在集合元素是字符串类时候,并且cmd运行才会随机删除

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

clear() : 清空集合中元素

s = {"华为","小米",'苹果'}
s.add('三星') # add 是往前面添加
print(s)
s.add("oppo")
print(s)
s.discard('华为')
print(s)
s.clear()
print(s)
```

1.3 字典 dict

1.3.1 概念

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

name = ["小明",'大锤','汤姆','杰克']
tel = ["10086",'10010','10000','12315']
# 为了方便查阅,python就提供了一个存储方式:字典
字典就是以键值对来存储的

什么是键值对?
小明就是键,对应一个值就是 "10086"

键值对语法: key:value    ex    "小明":"10086"(一个元素,键值对)
        
字典的表现形式:字典和集合一样用大括号,如果大括号里面如果存储的是普通的值,就是集合,如果是键值对(说明关系的数据),那么它就是字典

字典跟普通容器不同,更适合去描述一个对象

语法格式:
	字典名 = {键名1:值,键名2:值,键名3:值.。。。}
    
nr = {
    '姓名': '小明',
    '年龄': 18,
    '工作': '写Python'
}
输出方式:
	字典名[键]
    print(nr['工作'])
	print(call['大锤'])

 1.3.2 性质

字典在内存中主要是通过键来访问

1. 无序 没有下标,字典可以通过键来访问数据
	字典名[键]
2. 不重复,字典的键,是不可以重复的
	nr = {
        '姓名': '小明',
        '年龄': 18,
        '工作': '写Python',
        '年龄': 28
	} # 重复了,默认取最后一个
3. 可变性,字典里面的数据是可变的,能嵌套
	nr['年龄'] = 28
    
    nr = {
    '姓名': '小明',
    '年龄': 18,
    '工作': '写Python',
    '技能': ['python', 'java', 'c', 'scala', '珠峰']
}

1.3.3 方法

增 

- 增
	- setdefault:给字典添加一个元素,如果原先有这个元素,就输出它的值
    - 字典名.setdefault("键名") -->能增加一个键,值默认为空
    - 字典名.setdefault("键名","值")
    nr.setdefault("出生日期","1900-08-08")
    print(nr)

一般增加不是用方法,而是直接写
zd = {"a": 1, "b": 2}
zd['c'] = 3  # 直接这样也能增加
print(zd)

删 

--删
```python
pop() : 删除指定的键

字典名.pop(键名)
zd.pop("c")  # 字典
print(zd)
zd.pop("a")
print(zd)

clear() : 清空字典
```

```python
update: 修改键的值,如果没有这个键,就新增加一个
    字典名.update({键,值})
zd.update({"d":10})
print(zd)

常用的:直接赋值
zd['a'] = 5
print(zd)
```

 查

```python
- get(键名,默认值) : 通过键名,获得键值
    print(zd.get('c','^_^')) # 区别,找不到不会报错,会填充默认值
- keys:  获得所有的键
- values   获得所有的值
zd = {"a": 1, "b": 2}
zd['c'] = 3  # 直接这样也能增加
print(list(zd.keys()))
print(list(zd.values()))

- items: 获取所有的键值对,将键值对全部装成元组
```

2.1 格式化输出

格式化输出让可以更舒服的输出带有变量的字符串

2.1.1 %方法(占位符)

先预定,占住一个位置,后续再用实际的数据填不上

程序在开发的时候,有时候不确定使用的数据具体是啥,先占个位置

占位符也能分为不同的类型

  • 常用的占位符

%s = 字符串

%d = 整数

%f =  小数 =》 默认保留6位小数点 

​	%.1f => 保留一位小数点

​    %.2f => 保留二位小数点

语法

"xxx%dxxxx%s"%(变量1,变量2)

nr = {
    'name': "小明",
    'age': 18,
    'height': 1.77,
}

print("你好,我叫%s,今年%d岁了,身高%.3f" % (nr['name'], nr['age'], nr['height']))

2.1.2 format()方法

字符串的一个方法

语法

print("你好,我叫{},今年{}岁了,身高{}".format(nr['name'],nr['age'],nr['height']))

2.1.3 f-format()

python3.x 新提供的格式化输出方式,寓意快速

更简单,更常用

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

name = "小明"
age= 18
height =  1.7

print(f"大家好,我叫{name}我今年{age}岁,今年身高是{height}")
# 大括号内的变量可以进行操作 : 方法,切片,增加减少
print(f"大家好,我叫{name[0]}我今年{age+1}岁,今年身高是{height*2}")

 3.1 小练习

# 1.将列表数据[1,2,3,2,1,4,4,4,2,5,6,7,7,9,8,10,10]去重

# 2.用字典建立一个个人名片,要求要一个爱好:[]

# 3.有字典 dic = {"k1": "v1", "k2": "v2", "k3": "v3"},实现以下功能:
	(1)、遍历字典 dic 中所有的key
    (2)、遍历字典 dic 中所有的value
    (3)、循环遍历字典 dic 中所有的key和value
    (4)、添加一个键值对"k4","v4",输出添加后的字典 dic
    (5)、删除字典 dic 中的键值对"k1","v1",并输出删除后的字典 dic
    (6)、获取字典 dic 中“k2”对应的值
# 4.students = [
    {'name':'小明','age':18,'score':98,'tel':'18888888888','gender':'female'},
    {'name':'大明','age':20,'score':95,'tel':'18888888889','gender':'unkown'},
    {'name':'汤姆','age':18,'score':88,'tel':'18888888810','gender':'male'},
    {'name':'杰克','age':16,'score':58,'tel':'18888888811','gender':'unkown'},
    {'name':'山姆','age':19,'score':78,'tel':'18888888812','gender':'male'},
    {'name':'麦克','age':17,'score':92,'tel':'18888888813','gender':'male'},
]
# 1.统计及格学生的个数
# 2.将女性改为男性

4.1 解析

# 1.将列表数据[1,2,3,2,1,4,4,4,2,5,6,7,7,9,8,10,10]去重
 set1=[1,2,3,2,1,4,4,4,2,5,6,7,7,9,8,10,10]
 set2=set(set1)
 print(list(set2))

# 2.用字典建立一个个人名片,要求要一个爱好:[]
 gr={
     '姓名:' :'me',
     '年龄:' : 26,
     '兴趣爱好:':['打篮球','学python','打游戏','永劫无间']
 }
 print(gr)

# 3.有字典 dic = {"k1": "v1", "k2": "v2", "k3": "v3"},实现以下功能:
# 	(1)、遍历字典 dic 中所有的key
dic={"k1": "v1", "k2": "v2", "k3": "v3"}
 for i in dic:
     print(i)
#     (2)、遍历字典 dic 中所有的value
 for i in dic.values():
     print(i)
#     (3)、循环遍历字典 dic 中所有的key和value
 for i in dic.keys():
     print(i,dic[i])
#     (4)、添加一个键值对"k4","v4",输出添加后的字典 dic
'第一种方法: '
 dic_1=dic.setdefault("k4","v4")
 print(dic)
'第二种方法: '
 dic["k4"]='v4'
 print(dic)
#     (5)、删除字典 dic 中的键值对"k1","v1",并输出删除后的字典 dic
 dic.pop("k1")
 print(dic)
#     (6)、获取字典 dic 中“k2”对应的值
 print(dic["k2"])



students = [
    {'name':'小明','age':18,'score':98,'tel':'18888888888','gender':'female'},
    {'name':'大名','age':20,'score':95,'tel':'18888888889','gender':'unkown'},
    {'name':'汤姆','age':18,'score':88,'tel':'18888888810','gender':'male'},
    {'name':'杰克','age':16,'score':58,'tel':'18888888811','gender':'unkown'},
    {'name':'山姆','age':19,'score':78,'tel':'18888888812','gender':'male'},
    {'name':'麦克','age':17,'score':92,'tel':'18888888813','gender':'male'},
]
# 1.统计及格学生的个数
 j=0
 for i in students:
     if(i['score']>=60):
         j+=1
 print(j)
# 2.将女性改为男性
for i in students:
    if(i['gender']=='female'):
        i.update({'gender':'male'})
    print(i)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值