集合 Set
set 被称为集合, 是无序的, 并且集合中的元素都是唯一的
1. 集合的创建
python">s = {"zs", "ls", "ww"}
print(p)
打印的结果是不固定, 所以集合无序
结果为 : {"ww", "zs", "ls"}
python">s = {"zs", "zs", "ls", "ww"}
print(s)
结果为 : {"zs", "ls", "ww"}
2. 遍历集合 for
python">s = {'张三','李四','王五'}
# 遍历集合
for ele in s:print(ele)
3. 删除元素 remove / pop / discard
remove 删除, 如果有直接删除, 如果没有会报错
python">s = {'张三','李四','王五'}
# 删除张三
s.remove('张三')
pop 删除,随机删除集合中的元素并返回,如果集合中没有元素,则程序报错
python">s = {'张三','李四','王五'}
# pop 随机删除
print(s.pop())
discard
删除,元素存在则直接删除,如果元素不存在,则不做任何操作
python">s = {'张三','李四','王五'}
# discard 删除元素 如果元素不存在,不做任何处理
s.discard('林青霞')
字典 dict
1. 字典的定义
dictionary (字典) 是除列表以外Python之中最灵活的数据类型
可以存储多个数据
使用的是键值对保存数据
使用 { } 定义数据, 键值对之间使用 , 分割, 键和值之间使用 : 分割
python">d = {"name" : "zs","age" : 18,"sex" : "男"
}
字典中的键相当于索引,必须是唯一的
python">d = {'中国':'China','英国':'England','美国':'America','美国':'USA'}
print(d)
结果为: {'中国': 'China', '英国': 'England', '美国': 'USA'}
2. 字典操作
对以下字典进行操作
python">dic = {"name": "张三","age": 18,"sex": "男","hobby": ["吃", "喝", "玩"]
}
2.1 增 setdefault
字典名["新的键"] = 新的值
字典名.setdefault("键名", 值)
python"># 添加
# dic["新的键"] = 值
# setdefault(key, value)
dic["gender"] = "二年级"
print(dic)
dic.setdefault("home", "阿拉伯")
print(dic)
2.2 删 (del / pop / clear)
del 字典[键] 键不存在, 报错 字典.pop(键) 键不存在, 报错 字典.clear 清空字典
python">del dic["name"]
print(dic)
dic.pop("age")
print(dic)
dic.clear()
print(dic)
2.3 改
直接使用字典名["键名"] 进行修改
python"># 直接修改
dic["name"] = "李四"
print(dic["name"])
2.4 查 (get / .values/ .keys)
字典名 ["键名"] 当键不存在时, 报错
字典名.get ["键名"] 当键不存在时, 返回None
字典名.values() 获取所有值
字典名.keys() 获取所有键
python"># 查找
# dic["键名"]
# get("键名")
# dic.values() 获取所有值
# dic.keys() 获取所有键
print(dic)
print(dic["name"])
print(dic["hobby"])
print(dic.get("name"))print(dic.values())
print(dic.keys())
切片
1. 切片的定义
获取数据中一部分数据
取一个str
、list
、tuple
的部分元素是非常常见的操作
- 切片 译自英文单词
slice
,指的是一部分 - 切片 根据 步长
step
从原序列中取出一部分元素组成新序列 - 切片适用于 字符串、列表、元组
- 开始索引:结束索引:步长
- 步长不写默认为 1
2. 切片的格式
字符串[开始索引:结束索引:步长]
包含开始索引, 不包含结束索引
3. 索引的正序和倒序
索引分为正序和倒序
- 正序:从左向右,
0
开始 - 倒序:从右向左,
-1
开始
4. 切片操作
对下面字符串进行操作
python">str1 = "abcdefg"
1. 取abcde
开始下标为 0 , 到5结束, 取到下标为 0,1,2,3,4
python">print(str1[0 : 5])
2. 取cde
开始下标为2, 到5结束, 取到下标为2, 3, 4
python">print(str1[2 : 5])
3. 取全部 :
python">print(str1[ : ])
4. 取最后一个g
后面从下标 -1 开始, -1, -2,-3...取几个就是-几
python">print(str1[-1])
5. 取后三个efg
python">print(str1[-3: ])
6. 间隔一个取一个aceg
间隔1个,传2, 间隔2个传3...
python">print(str1[0::2])
7. 间隔两个取一个adg
默认从0开始,可以不写
python">print(str1[::3])
8. 从第二个到最后bcdefg
从第几个到最后,就是第几个的下标:
python">print(str1[1:])
9. 逆序 ::-1
python">print(str1[::-1])
推导式
推导式指的是轻量级循环创建数据的方式,对列表或可迭代对象中的每个元素应用某种操作,用生成的结果创建新的列表;或用满足特定条件的元素创建子序列。
简单来说: 推导式: 轻量级循环创建数据的方式,取出满足条件的数据,组成新的数据
推导式包括:
- 列表推导式
- 元组推导式
- 集合推导式
- 字典推导式
python">
# 列表推导
# lst = [x for x in range(1, 10)]
# print(lst)
# 1 2 3 4 5 6 7 8 9
print("-----------------列表推导----------------")
# 根据条件生成新的列表
lst = [x for x in range(1, 10) if x % 2 == 0]
print(lst) # [2, 4, 6, 8]# 1-10的3次方中的偶数
lst1 = [pow(x, 3) for x in range(1, 10)]
lst2 = [pow(x, 3) for x in range(1, 10) if x % 2 == 0]
print(lst1)
print(lst2)"""
zip 合成一个元组
"""
lst3 = [x for x in zip(range(0, 6), range(7, 11))]
print(lst3)
# [(0, 7), (1, 8), (2, 9), (3, 10)]print("-----------------元组推导----------------")
# 元组推导tuple()转换, 否则出现地址
tu1 = tuple(t for t in range(1, 11))
print(tu1)
tu2 = tuple(t for t in range(1, 11) if t % 2 == 0)
print(tu2)print("-----------------字典推导----------------")
# 字典推导需要键值对, 并且需要zip
# 数据量根据键来决定
dic = {k + 3: v for k, v in zip(range(1, 10), range(21, 30)) if k % 2 == 0}
print(dic)
推导式练习
需求:
请写出一段 Python 代码实现分组一个 list 里面的元素
比如 [1,2,3,...100] 变成 [[1,2,3],[4,5,6]....[100]]需要将列表中三个元素一组分隔,剩下的最后一组,其实就是对列表进行切片操作
python">lst = [i for i in range(1, 101)]
# print(lst)
# print(len(lst))
print(lst[0:3]) # [1, 2, 3]new_lst = [lst[i:i + 3] for i in range(0, len(lst)) if i % 3 == 0]
print(new_lst)
公共方法
python">lst = [1, 2, 3, 4, 5]
print(len(lst))
del lst[1]
print(lst)
print(max(lst))
print(min(lst))
str1 = "今天是个好日子"
print(max(str1))
str2 = "abcdefg"
print(min(str2))
print(len(str2))s2 = "你好"
s1 = "世界"
print(s2 + s1)
print(s1*3)
print('你' in s2)
print("你" not in s2)