广州番禺Python, Java小班周末班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6
13.1.1 理解集合类型
集合类型与字典类型非常接近,Python中的集合类型也是用{}符号括住的一个数据集合,集合中的元素以英文逗号进行分隔。
集合与字典一样,底层实现基于哈希表:
# 定义一个集合变量stars stars = {"陈法蓉", "陈德蓉"}在上文代码中定义了一个集合类型变量stars, 在stars中包含两个元素,集合中的元素相当于字典中的键名,也就是说,Python中的集合类型是键名的数据集合。既然Python中的集合是键名的数据集合,那么集合中的元素必须是静态的、可哈希的数据类型,我们可以在交互模式中进行验证:
>>> stars ={"陈法蓉", "陈德容", ["李嘉欣"]}Traceback (most recent call last):File "<stdin>", line 1, in <module>TypeError: unhashable type: 'list'
由输出可知,在定义集合类型的变量时,由于元素中包含可变的数据类型(列表),Python解释器抛出了类型错误的异常信息。
13.1.2 集合的类型名
在交互模式中通过type来输出集合的类型名:
>>> stars = {"陈法蓉", "陈德蓉"}>>> type(stars)<class 'set'>
从输出可知,字典的类型名为set。
集合中的键名同样是唯一的,对列表进行显式类型转换以后,可以自动去掉重复的元素:
# __desc__ = 使用集合类型进行显式转换,对列表中的元素进行去重 # 在列表中可以包含重复的元素 stars = ["陈法蓉", "陈德蓉", "陈法蓉", "陈德蓉"] stars = set(stars) # stars的输出为{'陈德容', '陈法蓉'}
13.1.3 集合的定义
对集合进行定义,主要有对象定义法和直接定义法。
(1) 对象定义法
集合的类型名是set,可以直接在交互模式中执行help(set)来查找set的定义及用法:
class set(object)| set() -> new empty set object| set(iterable) -> new set object|| Build an unordered collection of unique elements.
从交互模式的输出中,可看到如下两个定义集合的构造方法:
(1) set()(2) set(iterable)
1.set()
使用set()构造一个空的集合。
代码实例:
# __desc__ = 通过set()构造一个空的集合 # 定义一个空的集合 stars = set() # 空值在条件判断中会自动转换为布尔类型False if stars: print("there are stars in stars") else: print("there is no star in stars")2. set(iterable)
这里的iterable表示的是可迭代对象,可迭代对象中的元素必须是不可变的数据类型,否则会抛出类型错误的异常信息。迄今为止学过的可迭代对象:字符串,列表,元组,字典,集合
代码实例:
# __desc__ = 通过可迭代对象来构造集合 # 1.通过字符串类型来构造集合 alphabet = set("abcdefg") # alphabet的输出为{'e', 'c', 'b', 'a', 'g', 'd', 'f'} # 2.通过列表类型来构造集合 alphabet = set(['e', 'c', 'b', 'a', 'g', 'd', 'f']) # alphabet的输出为{'e', 'c', 'b', 'a', 'g', 'd', 'f'} # 3.通过元组类型来构造集合 alphabet = set(('e', 'c', 'b', 'a', 'g', 'd', 'f')) # alphabet的输出为{'e', 'c', 'b', 'a', 'g', 'd', 'f'} # 4.通过字典类型来构造集合 alphabet = set({'e': 1, 'c': 1, 'b': 1, 'a': 1, 'g': 1, 'd': 1, 'f': 1}) # 使用字典类型进行构造时,以字典中的键名作为集合的键名 # alphabet的输出为{'e', 'c', 'b', 'a', 'g', 'd', 'f'} # 5.通过集合类型来构造集合 alphabet = set({'e', 'c', 'b', 'a', 'g', 'd', 'f'}) # alphabet的输出为{'e', 'c', 'b', 'a', 'g', 'd', 'f'}可迭代对象中的元素必须是不可变的数据类型,否则会抛出类型错误的异常信息:
>>> stars = ["陈法蓉", "陈德容", ["陈法蓉", "陈德容"]]>>> stars = set(stars)Traceback (most recent call last):File "<stdin>", line 1, in <module>TypeError: unhashable type: 'list'
简单数据类型,字符串,元组都是不可变的数据类型,列表,字典,集合等是可变的数据类型。
(2) 直接定义法
直接定义法是指直接通过集合的别名符号{}来进行定义。在{}中,键名以英文逗号进行分隔。
代码实例:
# __desc__ = 直接通过{}来构造集合 # 不能使用{}来构造一个空的集合,Python解释器会将其解析为字典类型 stars = {} # stars是一个空的字典 # 构造一个有值的集合 stars = {"陈法蓉", "陈德蓉"}
13.1.4 在循环中遍历集合
集合是一种可迭代对象,可以在for循环中遍历集合的键名。
遍历集合的for循环结构:
for name in set: pass代码实例:
# __desc__ = 在for循环中遍历集合的键名 # 构造一个有值的集合 stars = {"陈法蓉", "陈德蓉"} for star in stars: print(star)
13.1.5 集合的元素输出顺序
Python3.6以前,字典中的键的输出顺序是无序的,在3.6以后,键的输出顺序与元素的插入顺序一致。但集合的键的输出顺序仍是无序的。
代码实例:
# __desc__ = 集合的键的输出顺序是无序的 alphabet = set("abcdefg") # alphabet的输出可能为{'e', 'c', 'b', 'a', 'g', 'd', 'f'} # 从输出顺序可以看出,与元素本来的排列顺序并不一致Python中的集合同样是基于哈希表进行实现,键的输出顺序取决于底层的数据结构。
13.1.6 知识要点
(1)Python中的集合类型是用{}符号括住的一个数据集合,集合中的元素以英文逗号进行分隔。(2)集合中的元素,相当于字典中的键名,元素类型必须是静态的数据类型。(3)集合的类型名是set,可通过对象定义法和直接定义法来定义字典(4)集合也是一种可迭代对象,可以在for循环中直接遍历出集合的键名
13.1.7 最具实力的小班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。
(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪11K-20K, 免费领取课程大纲
(4) Python大数据分析,量化投资就业班,月薪12K-25K,免费领取课程大纲
扫码免费领取Python学习资料: