# -*- codeing = utf-8 -*-
# @Time : 2021/2/25 16:38
# @Author : bolin
# @File : demo3.py
# @Software : PyCharm
元组
- 元组tuple与list类似,不同之处在于tuple的元素不能进行修改。tuple写在小括号里
- 元组元素不可变,但可以包含对象
tup1 = () #创建新的元组,<class 'tuple'>
tup2 = (50) #不是元组,<class 'int'>
#可以加一个,来区分元组
print(type(tup1))
print(type(tup2))
tup1 = ("abc","def",2000,2020.333,555,666)
print(tup1[0]) #访问第一个数据
print(tup1[-1]) #访问最后一个数据
print(tup1[1:5]) #左闭右开,进行切片
- 增
- 在内存空间直接新建一个元组,连接两个元组
tup1 = (12,34,56)
#tup1[0] = 100 #报错,不允许修改
tup2 = ("abc","xyz")
tup = tup1 + tup2
print(tup)
- 删
tup1 = (12,34,56)
print(tup1)
del tup1 #删除了整个元组变量,不允许删除某一个值
print("---删除后---")
print(tup1)
- 改
tup1 = (12,34,56)
#tup1[0] = 100 #报错,不允许修改
- 查 直接访问元组的过程
字典
- 字典是无序的对象集合,使用键值对(key-value)存储
- 键必须是不可变类型
- 同一字典中,键是唯一的,值可以重复
- 键值对之间使用 : 进行连接,每个键值对使用 , 连接
- 字典的定义 字典使用的是{ },中间的键值对连接和元组相同
info = {"name":"吴彦祖","age":18}
- 字典的访问 查找键,显示值
print(info["name"])
print(info["age"])
- 访问不存在的键
#print(info["gender"]) #直接访问会报错,通过
print(info.get("gender")) #适应get方法,没有找到对应的键,默认返回:none
print(info.get("age","20"))
print(info.get("gender","m")) #没找到的话,设定显示默认值
- 字典的合并
- 合并相同的项,使用update后面的项直接覆盖,不同的项则按照顺序显示
dict1 = {"name":"吴彦祖","age":28,"特点":"高,富,帅!!!"}
dict2 = {"name":"刘德华","age":56,"备注":"无子无女"}
print("---合并前---")
print(dict1)
print(dict2)
dict1.update(dict2) #只更新dict1,不更新dict2
print("---合并后---")
print(dict1)
print(dict2)
—合并前—
{‘name’: ‘吴彦祖’, ‘age’: 28, ‘特点’: ‘高,富,帅!!!’}
{‘name’: ‘刘德华’, ‘age’: 56, ‘备注’: ‘无子无女’}
—合并后—
{‘name’: ‘刘德华’, ‘age’: 56, ‘特点’: ‘高,富,帅!!!’, ‘备注’: ‘无子无女’}
{‘name’: ‘刘德华’, ‘age’: 56, ‘备注’: ‘无子无女’}
- 增
info = {"name":"吴彦祖","age":18}
info["id"] = input("请输入新的学号:")
print(info["id"])
- 删
- [del] :直接删除整个键值对或者字典
info = {"name":"吴彦祖","age":18}
print("---删除前---%s"%info["name"])
del info["name"] #删除的不仅仅是值,删的是整个键值对
print("删除后:%s"%info["name"])
- 删除字典
info = {"name":"吴彦祖","age":18}
print("---删除前---%s"%info)
del info
print("---删除后---%s"%info) #删除字典后,再次访问报错
- [clear]:清除数据
info = {"name":"吴彦祖","age":18}
print("---删除前---%s"%info)
info.clear() #清空键值对,字典存在,访问为空
print("---删除后---%s"%info)
- 改
info = {"name":"吴彦祖","age":18}
info["age"] = 20
print(info["age"])
- 查
info = {"id":1,"name":"吴彦祖","age":18}
print(info.keys()) #得到所有的键(列表)
print(info.values()) #得到所有的值(列表)
print(info.items()) #得到所有的项(列表),每个键值对是一个元组
- 遍历所有的值
info = {"id":1,"name":"吴彦祖","age":18}
for value in info.values():
print(value)
#遍历所有的键值对
for key,value in info.items():
print(key,value)
print("key=%s,value=%s"%(key,value))
- 枚举: 使用enumerate()同时拿到列表中的下标和元素内容
mylist = ["a","b","c","d"]
for i,x in enumerate(mylist):
print(i,x)
集合(set)
- 键的集合,不存储值,且键不能重复,set是无序的,重复元素会被过滤
- set可以看作数学意义上的无序和无重复的集合,可以进行并集、交集、差集
s1 = set([1,2,3])
print(s1)
s2 = set([1,1,2,2,3])
print(s2)
简单的总结