首先要填上昨天集合部分没有讲到的坑——交并补运算,想必大家第一次认识集合都是在高中数学必修一的课本上,高考时也常作为第一道“开胃菜”出现。
下面我就来为大家演示如何用Python计算多个集合的相关关系。
交集的获取需要用到intersection函数,特别指出该函数的作用对象也可以是其他序列数据类型,比如列表和元组。
set1 = {"a", 2.5, -2, 4}
set2 = {"b", 4, bool(4)}
set3 = {4}
list1 = ["a", -2]
print(set1.intersection(set2, set3))
print(set1.intersection(list1))
我修改了一下结果的呈现方式,个人感觉以代码的方式展现要更加美观。
{4}
{'a', -2}
并集则是用到了union函数,同样地,该函数也适用于其他序列数据类型。
set1 = {"a", 2.5, -2, 4}
set2 = {"b", 4, bool(4)}
set3 = {14}
list1 = ["a", 30]
print(set1.union(set2, set3))
print(set1.union(list1))
{True, 2.5, 4, 14, 'a', 'b', -2}
{2.5, 4, 'a', 30, -2}
对于补集来说,这个词可能不太准确因为我们日常情况下都是以图1的方式表达补集的,但是Python中提供的difference方法则会导致图2的情况,当然图2情况是包含图1的,大家可以放心使用difference方法来获得严格意义上的“补集”。在百度百科上也提供了绝对补集和相对补集两种概念,大家可以自行查阅。
set1 = {"a", 2.5, -2, 4}
set2 = {"b", 4, bool(4)}
set3 = {2.5}
list1 = ["a", 30]
print(set1.difference(set2, set3))
print(set1.difference(list1))
{'a', -2}
{2.5, 4, -2}
再补充一点,issubset函数可以判断一个集合是否是另一个集合的子集,输出的结果为布尔值。
要注意括号里的集合是父集,函数前面的是子集。
set1 = {"a", 2.5, -2, 4}
set2 = {"a", 4}
list1 = ["a", 30]
print(set2.issubset(set1))
print(set1.issubset(list1))
True
False
这些函数都可以泛用到所有序列数据类型,为我们编程提供了很多便利。
再来介绍一下字典,字典(dictionary)是一种特殊的序列数据类型,它的特殊之处在于其元素不是单独的数字、字符而是“键值对”——由“键”(key)和“值”(value)构成的一对数据。
字典的定义方式是大括号,这一点和集合类似,通过括号里键值对特有的冒号加以区分。另外可以使用dict( )来创建空字典。
dict1 = {"a": 3, -2: [2, 3, 4], 3: "a", (7, 8, 9): {256}}
print(dict1, type(dict1))
dict2 = dict()
print(dict2, type(dict2))
{'a': 3, -2: [2, 3, 4], 3: 'a', (7, 8, 9): {256}}
{}
键必须不可变所以其数据类型可选的并不多,如数字、字符串和元组;值的数据类型则更灵活,可以是其他序列数据甚至是用户自定义类型。
键的作用就像是列表和元组里的索引,所以我们可以通过键来访问值并对其加以修改。
dict1 = {"a": 3, -2: [2, 3, 4], 3: "a"}
print(dict1["a"])
dict1["a"] = 10
print(dict1)
del dict1[-2]
print(dict1)
3
{'a': 10, -2: [2, 3, 4], 3: 'a'}
{'a': 10, 3: 'a'}
除了单独修改某一个值外,我们可以使用update函数来将一个字典中的值通过同名的键赋给另一个字典,原字典的值将会更新,对于原先不存在的键则会添加进新字典。
dict1 = {"a": 3, -2: [2, 3, 4], 3: "a", (7, 8, 9): {256}}
dict2 = {"a": 4, -2: ["234"], 66: 88}
dict1.update(dict2)
print(dict1)
{'a': 4, -2: ['234'], 3: 'a', (7, 8, 9): {256}, 66: 88}
当然我们也能像其他序列数据一样使用len函数输出字典的长度,注意一个键值对记为1。另外字典可以调用values方法将所有的值排成一个新列表。
dict1 = {"a": 3, -2: [2, 3, 4], 3: "a"}
print(len(dict1))
print(dict1.values())
3
dict_values([3, [2, 3, 4], 'a'])
以上就是字典这种数据类型的使用方法,至此我们已经学习了Python所有的数据类型,希望大家能够温故而知新,我们一起努力,一起进步。
欢迎大家批评指正,谢谢。