1.什么是元组(tuple)?
是python提供的容器型数据,不可变(特色),有序
元组就是不可变的列表,一般保存一些不让修改的数据
(元素1,元素2,元素3,元素4)
2.元素
空的元组:
tuple1 = ()
只有一个元素的元组:
tuple2 = (1,) # 一个元素结尾后必须加一个逗号
区别:如果元组只有一个元素在元素结尾必须加一个逗号
3.获取数据:和列表的操作一样
特殊情况:
1.表示坐标:让变量的个数和元组中的元素个数保持一致,来一一获取元组的元素
point = (100,50)
x, y = point
print('x:', x,'y:', y)
2.表示元组的时候小括号可以省略
tuple3 = 10, 20, 30, 40
print(type(tuple3))
3.变量和元组元素的个数不一样的取法:在一个变量前加*将这个变量变成一个列表,来获取不带*的变量获取后剩下的数据。(带*的变量只能有一个)
student = ('小明', 18, 85, 86, 95)
name, age, *score = student
print(name, age, score)
print('++++++')
name, *score, age = student
print(name, age, score)
4.扩展:一个容器前面加*,可以将容器里面的元素拆开
score = (10, 20, 30)
print(*score)
4.什么是字典(dict)?
1.字典是python提供的容器型数据类型(序列),可变,无序
2.字典中的元素:
{键值对1,键值对2,键值对3} - 字典的元素就是键值对
键值对 - 以’键‘:’值的形式
键(key) - 要求不可变,唯一(建议)
值(value)- 任何数据类型都可以作为值
#用一个变量保存学生信息
student = {‘姓名’:'张三‘,'年龄':18,'性别':'男'}
print(student)
3.元素的操作
1.查 - 获取值
字典[key] - 获取字典中key对应的value
student = {'姓名': '张三', '年龄': 18, '性别': '男'}
print(student)
2.字典.get(key) - 获取字典中key对应的value值(如果key不存在不报错,结果是None),字典.get(key,默认值) - 获取字典中key对应的value(如果key不存在,返回默认值)
dog = {'name': '阿黄', 'color': '黄色', 'age': '28', 'type': '土狗'}
print(dog.get('name'))
print(dog.get('gender', '公狗'))
3.遍历字典
# 1.直接通过for循环字典的时候,获取到的是所有的key
for key in dog:
print(key, dog[key])
print('++++++')
# 2.间接遍历
for value in dog.values():
print(value)
print('+++++')
for key, value in dog.items():
print(key, value)
print('++++++++++')
# 3.增/改
# 字典[key] = value - 如果key存在,修改key对应的值;如果不存在,添加键值对
class1 = {'name': 'python1902', 'address': '19楼5教室'}
print(class1)
class1['num'] = 50
print(class1)
class1['name'] = 'python1902'
print(class1)
4.删除
1.del 字典[key] - 删除字典中key对应的键值对,如果key不存在会报错
2.字典.pop(key) - 取出字典中key
class2 = {'name': 'python1902', 'address': '19楼5教室', 'num': 50}
del class2['num']
print(class2)
print('----------------')
name = class2.pop('name')
print(class2, name)
5.字符串的相关操作
# 1.运算符:不支持数学运算,比较运算符只支持比较相等不支持比较大小
print({'a': 100, 'b': 10} == {'b': 10, 'a': 100}) # True
# 2.in/not in
# key in 字典 - 判断字典中是否存在的指定的key
class2 = {'name': 'python1902', 'address': '19楼5教室', 'num': 50}
print('name' in class2) # True
print(50 not in class2) # True
# 3.len()
print(len(class2))
print('----------------')
# 4.dict
# 条件:数据本身是序列,序列中的每个元素是长度为2的序列,
# 而且小序列中的第一个元素是不可变的
data = [('a', 2), ('b', 20)]
print(dict(data))
6.字典的相关方法
# 1. 字典.clear() - 清空字典
class3 = {'name': 'python1902', 'address': '19楼5教室', 'num': 50}
class3.clear()
print(class3)
print('------------')
# 2.字典.copy()- 拷贝字典中的键值对产生一个新的字典
class3 = {'name': 'python1902', 'address': '19楼5教室', 'num': 50}
new_class3 = class3.copy()
print(new_class3)
print('---------------')
# 3.fromkeys
# dict.fromkeys(序列,值) - 创建一个新的字典,字典的key是序列的元素,key对应的value是值
new_dict = dict.fromkeys('world', 100)
print(new_dict)
print('-----------------')
# 4.keys, values, items
"""
字典.keys() - 获取字典中所有的key,结果是一个序列
字典.values() - 获取字典中多有的value,结果是一个序列
字典.itenms() - 获取字典中所有的key和value,key和value以元组的形式返回
"""
students = {'name': 'zhangsan', 'age': 18, 'stu_id': 'stu001', 'gender': '女'}
print(students.keys())
print(students.values())
print(students.items())
print('--------------')
# 5.setdefault
# 字典.setdefault(key,value) - 添加键值对(不能修改)
students.setdefault('tel', '18200482453')
print(students)
print('-------------')
# 6.update
# 字典1.update(字典)- 使用字典中的键值对去更新字典1(不存在添加、存在修改)
dict1 = {'a': 1, 'b': 2, 'c': 3}
dict2 = {'b': 200, 'd': 300, 'e': 400}
dict1.update(dict2)
print(dict1)
5.集合(set)
"""
1.什么是集合(set)
容器型数据类型,可变、无序
2.集合中的元素
{元素1,元素2,元素3,元素4}
元素要求:不可变、唯一(自带去重功能)
"""
# 注意{}不能表示空的集合,set()- 空集合
set1 = set() # 空集合
set2 = {1, 'abc', (1, 3), False}
print(set2)
print('*****************************')
# 集合可以去重
str2 = 'hdbashdjahaaabbbbbfs'
print(''.join(set(str2)))
print('++++++++++++++++++++++++')
"""
3.集合的相关操作
1.查 - 集合不能单独的获取指定的某一个元素,只支持遍历
"""
set3 = {12, 34, 56, 78, 2}
for x in set3:
print(x)
print('+++++++++')
"""
2.增
集合.add(元素) - 往集合中国添加一个元素
"""
set4 ={1}
set4.add(100)
print(set4)
print('-------------')
# 集合.update(序列) - 将序列中的元素添加到集合中(自带去重)
set5 = {1}
set5.update('abc')
print(set5)
print('++++++++++++++++++')
"""
3.删
集合.remove(元素) - 删除集合中指定的元素(元素不存在会报错)
"""
set5.remove(1)
print(set5)
print('------------------')
"""
(*) 4.数学集合运算
"""
num = {1, 2, 3, 4}
num1 = {3, 4, 5, 6}
# 1.集合1 | 集合2 - 将两个元素合并产生新的集合
print(num | num1)
print('----------')
# 2.集合1 & 集合2 - 求两个集合的公共部分
print(num & num1)
print('-------')
# 3.差集 : 集合1 -集合2 --- 获取集合1中除了集合2以外的部分
print(num - num1)
print(num1 - num)
print('---------')
# 4.补集: 集合^集合2 --- 两个集合中除了公共部分以外的部分
print(num ^ num1)
print('++++++++++++++++++')
# 5.包含关系
# 集合1 >= 集合2:集合1中是否包含集合2
# 集合1 <= 集合2:集合2中是否包含集合1
number = {1, 2, 3, 4}
number1 = {2, 3}
print(number >= number1)