![cbedd9e3b09f566a0960f60bc27d4723.gif](https://img-blog.csdnimg.cn/img_convert/cbedd9e3b09f566a0960f60bc27d4723.gif)
点击上方蓝字关注我们
![cbedd9e3b09f566a0960f60bc27d4723.gif](https://img-blog.csdnimg.cn/img_convert/cbedd9e3b09f566a0960f60bc27d4723.gif)
![c9bcdf82b3a492e98dc449a37df1a039.gif](https://img-blog.csdnimg.cn/img_convert/c9bcdf82b3a492e98dc449a37df1a039.gif)
1# 元组的定义
2tu = (1,3,[5,7],("a","b"),{"name":"zero学堂","age":1},)
定义元组的时候使用小括号,里面是元组的元素,元素的类型可以是整型、字符串、列表、元组、字典、布尔值等任何数据类型。为了很明显的表示定义的是一个元组,习惯上会在最后一个元素后面加一个逗号。
元组和列表在很多操作上都是类似的,也有一些不同的地方。
元组和列表的区别:
比较项 | 列表 | 元组 |
一级元素是否可以被修改 | 是 | 否 |
切片、索引 | 是 | 是 |
for循环遍历 | 是 | 是 |
是否可以新增、删除元素 | 是 | 否 |
1# 字典的定义
2stu = {
3 "name":"zhangsan",
4 "age":28,
5 "hobbies":["reading","basketball"],
6}
字典的值可以是任何类型的数据,但是字典的键不是,列表就不能作为字典的键(报错:TypeError: unhashable type: 'list)。意思是列表类型是unhashable。这是因为字典的键会被转换成一串哈希值最为真正的键,但是列表类型的数据不能被转换成哈希值。
字典的遍历
1# 字典的定义
2stu = {
3"name":"zhangsan",
4"age":28,
5"hobbies":["reading","basketball"],
6}
7
8for i in stu:
9 print(i) #输出 name age hobbies
如上直接遍历字典时输出的是字典的键
以上写法相当于:
1# 字典的定义
2stu = {
3"name":"zhangsan",
4"age":28,
5"hobbies":["reading","basketball"],
6}
7
8for i in stu.keys():
9 print(i)
![b3ebb15ce48db70d7200032d6075b700.png](https://img-blog.csdnimg.cn/img_convert/b3ebb15ce48db70d7200032d6075b700.png)
1stu = {
3"name":"zhangsan",
4"age":28,
5"hobbies":["reading","basketball"],
6}
7
8for i in stu.values():
9 print(i)
![b3ebb15ce48db70d7200032d6075b700.png](https://img-blog.csdnimg.cn/img_convert/b3ebb15ce48db70d7200032d6075b700.png)
1stu = {
3"name":"zhangsan",
4"age":28,
5"hobbies":["reading","basketball"],
6}
7
8for k,v in stu.items():
9 print(k,v)
![b3ebb15ce48db70d7200032d6075b700.png](https://img-blog.csdnimg.cn/img_convert/b3ebb15ce48db70d7200032d6075b700.png)
1stu = {
2 "name":"zhangsan",
3 "age":28,
4 "hobbies":["reading","basketball"],
5}
6
7v = stu.get("name","WANGWU") #第一个参数代表键,第二个参数代表如果键不存在时的默认值
8print(v)
9#输出 zhangsan
![b3ebb15ce48db70d7200032d6075b700.png](https://img-blog.csdnimg.cn/img_convert/b3ebb15ce48db70d7200032d6075b700.png)
1stu = {
2 "name":"zhangsan",
3 "age":28,
4 "hobbies":["reading","basketball"],
5}
6
7v = stu.pop("name","WANGWU")# 该方法会返回删除的键对应的值。第一个参数代表键,第二个参数如果键不存在默认返回的值
8print(stu,v)
9# 输出{'age': 28, 'hobbies': ['reading', 'basketball']} zhangsan
![b3ebb15ce48db70d7200032d6075b700.png](https://img-blog.csdnimg.cn/img_convert/b3ebb15ce48db70d7200032d6075b700.png)
1stu = {
2 "name":"zhangsan",
3 "age":28,
4 "hobbies":["reading","basketball"],
5}
6
7k,v = stu.popitem() #从字典中随机删除元素并返回删除元素的键-值
8print(k,v) #输出hobbies ['reading', 'basketball']
9print(stu) #输出{'name': 'zhangsan', 'age': 28}
![b3ebb15ce48db70d7200032d6075b700.png](https://img-blog.csdnimg.cn/img_convert/b3ebb15ce48db70d7200032d6075b700.png)
1stu = {
2 "name":"zhangsan",
3 "age":28,
4 "hobbies":["reading","basketball"],
5}
6
7stu.update(name="WANGWU",grade=4) #将name的值改成WANGWU,grade的值改为4,如果没有grade这个键,会自动新增出来
8print(stu)
9#输出 {'name': 'WANGWU', 'age': 28, 'hobbies': ['reading', 'basketball'], 'grade': 4}
集合
集合中元素的特点:
- 集合中的元素都是不同的(相同元素集合会自动去重)
- 集合中的元素是无序排列的
- 集合中的元素都是不可变类型
1# 集合的定义,使用花括号括起来,元素以逗号分隔
2st = {1,"s",("ZERO学堂",5)}
3print(type(st))
4#output:
集合中的元素必须是可变类型:
1st = {1,"s",["ZERO学堂",5]}
2print(type(st))
3# TypeError: unhashable type: 'list'
4# 集合中的元素必须是不可变类型,这里放入了列表,列表是可变类型,因此报错:unhashable
向集合中添加元素:add方法
1st = {1,"s",("ZERO学堂",5)}
2st.add("a")
3print(st)
4#putput:{1, 'a', ('ZERO学堂', 5), 's'}
add方法只能一次新增一个元素,采用元组的形式一次新增多个值:
1st1 = {"a",1,2,"s",("ZERO学堂",5),"英语","数学","体育"}
2t = (5,6)
3st1.update(t)
4print(st1)
清空集合:clear方法
1st = {1,"s",("ZERO学堂",5)}
2st.clear()
3print(st)
4# output:set()——空集合
删除集合元素:pop方法【随机】删除集合中的一个元素
1st = {"a",1,2,"s",("ZERO学堂",5)}
2st.pop()
3print(st)
4# output:{2, ('ZERO学堂', 5), 'a', 's'}
5# 注意:pop是[随机]中集合中删除一个元素
remove方法【指定删除】某个元素,删除的元素不存在会报错
1st = {"a",1,2,"s",("ZERO学堂",5)}
2st.remove("s")
3print(st)
4#output:{1, 2, 'a', ('ZERO学堂', 5)}
discard方法,删除的元素在集合中不存在是不会报错
1st = {"a",1,2,"s",("ZERO学堂",5)}
2st.discard("asss")#删除的元素在集合中不存在,但是不会报错
3print(st)
集合的交集:intersection(使用&符号也行)
1st1 = {"a",1,2,"s",("ZERO学堂",5),"英语","数学","体育"}
2st2 = {"英语","数学","体育"}
3print(st1.intersection(st2))
4#output:{'数学', '英语', '体育'}
集合的并集:union(或者使用符号|)
1st1 = {"a",1,2,"s",("ZERO学堂",5),"英语","数学","体育"}
2st2 = {"英语","数学","体育","化学"}
3print(st1.union(st2))
4print(st1|st2)
5#output:{'化学', 1, 2, '数学', ('ZERO学堂', 5), '体育', 's', 'a', '英语'}
6# {'化学', 1, 2, '数学', ('ZERO学堂', 5), '体育', 's', 'a', '英语'}
差集:使用difference方法(或者使用符号-)
1st1 = {"a",1,2,"s",("ZERO学堂",5),"英语","数学","体育"}
2st2 = {"英语","数学","体育","化学"}
3print(st2-st1)
4#output:{'化学'}
交叉补集:symmetric_difference方法(图中黄色的部分)
1st1 = {"a",1,2,"s",("ZERO学堂",5),"英语","数学","体育"}
2st2 = {"英语","数学","体育","化学"}
3print(st1.symmetric_difference(st2))
4#output:{'a', 1, 2, 's', '化学', ('ZERO学堂', 5)}
![c9bcdf82b3a492e98dc449a37df1a039.gif](https://img-blog.csdnimg.cn/img_convert/c9bcdf82b3a492e98dc449a37df1a039.gif)
![a83f24fdcdc490dc3dad4e8684f519f9.gif](https://img-blog.csdnimg.cn/img_convert/a83f24fdcdc490dc3dad4e8684f519f9.gif)
![896b21b4d4017bda52e56449ac47ba1a.png](https://img-blog.csdnimg.cn/img_convert/896b21b4d4017bda52e56449ac47ba1a.png)
![a83f24fdcdc490dc3dad4e8684f519f9.gif](https://img-blog.csdnimg.cn/img_convert/a83f24fdcdc490dc3dad4e8684f519f9.gif)