元祖tuple
1、什么是元祖 tuple = (1,1,1,1,1)
元祖是python提供的容器型数据类型(序列) 不可变,有序
元祖就是不可变的列表
特点:不可变
一般保存一些不让修改的数据
2、元素
tuple1 = ()
print(tuple1, type(tuple1))
2.1 元素个数是1的元祖 必须在元素后加逗号
tuple2 = (10,) # 必须在元素后加逗号
print(tuple2, type(tuple2))
2.2 元祖数据中小括号可以省略。多个数据直接用逗号隔开,表示的是一个元祖
tuple3 = 1, 1, 1, 1
print(tuple3, type(tuple3))
3、获取元素 获取元素和列表一样
tuple2 = ('周一', '周二', '周三')
print(tuple2[1:])
3.1 让变量的个数与元祖中元素的个数保持一致,来一一获取元祖中每个元素的值
point = (100, 50)
x, y = point
print(x, y)
3.2 让多个变量同时获取元祖中的元素的时候,可以在一个变量前加星号,将这个变量变成一个列表,来获取不带星号的变量获取后剩下的数据
注意:带星号的变量只能有一个
student = '小明', 18, 1, 2, 3, 6
name, age, *scores, r = student
print(name, age, r, scores)
字典dict
1、什么是字典 dict
字典是python提供的容器型数据类型(序列)。可变,无序
2、字典中的元素 字典的元素是键值对
{key1: 值1, key2: 值2, key3: 值3, ······}
键值对:以 键:值 的形式成对出现,
- 键(key) —— 要求 不可变 并且 唯一。 (建议用字符串作为key,用来对值进行说明和区分)
- 值(value) —— 任何数据类型都可以作为值
dict1 = {10: 1, 'name': 100, (1, 2): 100}
3、元素的操作
3.1 查 —— 获取值
- 字典[key] - 获取字典中key对应的value。 如果key不存在会报错!
- 字典.get(key) - 获取字典中key对应的value。如果key不存在不报错,结果是None
字典.get(key, 默认值) 如果key不存在,输出默认值
dict1 = {10: 1, 'name': 100, (1, 2): 100}
print(dict1[10])
print(dict1.get(10))
print(dict1.get(2, 2))
遍历
直接通过for循环遍历字典的时候,获取到的是所有的key
# 直接遍历
dict1 = {10: 1, 'name': 100, (1, 2): 100}
for key in dict1:
print(key, dict1[key])
3.2 增 改
字典[key] = value
如果key存在,就修改字典key对应的值;如果key不存在,就添加键值对
- 改
dict1 = {10: 1, 'name': 100, (1, 2): 100}
dict1['name'] = 'K'
print(dict1)
- 增
dict1 = {10: 1, 'name': 100, (1, 2): 100}
dict1['num'] = 110
print(dict1)
3.3 删
- del 字典[key] —— 删除字典中指定key对应的键值对,若key不存在会报错
- 字典.pop(key) —— 取出字典中key对应的值,若key不存在会报错
dict1 = {10: 1, 'name': 100, (1, 2): 100}
del dict1[10]
print(dict1)
s = dict1.pop((1, 2))
print(dict1, s)
4、字典相关操作
运算符不支持数学运算
比较运算符只支持比较相等 不支持比较大小
in / not in
key in 字典 - 判断字典中是否存在指定的key
print('name' in dict1)
len
len(dict1)
dict
能转换成字典的数据要求:
数据本身是序列,序列中的每个元素是长度为2的序列,并且元素内序列中第一个元素不可变
data = [('1', 1), [1, 1]]
print(dict(data))
print(list(dict1))
5、相关方法
clear
字典.clear() - 清空字典
copy
字典.copy() - 拷贝字典中的键值对产生一个新的字典
fromkeys
dict.fromkeys(序列, 值) - 创建一个新的字典,字典的key是序列的元素,key对应的value是值
new_dict = dict.fromkeys('yuo', 100)
# key是字符串y u o元素 值都是100
keys, values, items
字典.keys() - 获取字典中所有的key,结果是一个序列
字典.values() - 获取字典中所有的value,结果是一个序列
字典.tieams() - 获取字典中的key和value,key和value以元祖返回
setdefault
字典.setdefault(key, value) - 添加键值对(不能修改
update
字典1.update(字典2) - 使用字典2中的键值对去更新字典1,不存在添加,存在就修改
集合set
1、什么是集合 set
容器型数据类型 (序列) 可变 ,无序
2、集合中的元素
{元素1, 2, 3, ···}
元素:不可变的数据 并且唯一(自带去重)
- 空的集合 —— {}表示的是空字典
set0 = set() # 空的集合
set1 = {1, 'asd', (1, 2), False}
print(set1)
- 集合去重
str1 = 'shfkjsahdjdsafhjdfk'
print(''.join(set(str1)))
list1 = [1, 1, 2, 2]
print(list(set(list1)))
3、元素相关操作
3.1 查
集合不能单独获取指定的某一个元素
只支持遍历
3.2 增
- 集合.add(元素) - 集合添加一个元素
- 集合.update(序列) - 将序列中的元素添加到集合中(自带去重)
set1.add(45)
print(set1)
3.3 删
集合.remove(元素) - 删除集合中指定的元素
元素不存在会报错
set1.remove(1)
print(set1)
4、数学集合运算
set1 = {1, 2, 3, 4, 5, 6}
set2 = {1, 2, 3, 4, 7, 8}
-
并集 |
将两个集合中的元素合并
print(set1 | set2)
-
交集 &
求两个集合公共的部分
print(set1 & set2)
-
差集 - 集合1 - 集合2
求集合1中除去集合2以外的部分
print(set1 - set2)
print(set2 - set1)
-
补集 ^ 集合1 ^ 集合2
求两个集合除了公共部分以外的部分
print(set1 ^ set2)
-
包含关系
集合1 >= 集合2 集合1中是否包含集合2
集合1 <= 集合2 集合2中是否包含集合1