集合——软件接口测试实战详解(14)

发表于:2021-6-02 09:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:于涌 马林 张林丰    来源:51Testing软件测试网原创

  2.6  集合
  集合(set)是一种无序集,它是一个由键构成的集合。在集合中,不允许有重复的键,因此集合可以用于去除重复值。同时,对集合可以进行数学运算,如求并集、交集、差集以及对称差集等。

  2.6.1  创建集合
  集合的创建有两种方式,分别是使用set()函数和使用大括号{}。
  如图2-76所示,我们可以看到一个集合由大括号和集合元素构成,集合中的各元素(键)用逗号进行分隔。这里在设置集合元素的时候,故意写了两个重复的元素('熊猫鼠'),但是当我们输出set1对象的时候,却发现只保留了一个'熊猫鼠'。同时,细心的读者可以发现集合中元素的位置也发生了变化。因此,以下两点内容在应用集合时必须要注意。
  (1)集合中的元素是无序的。
  (2)尽管在定义集合时指定了两个甚至更多个重复的元素,但是集合会自动去除重复的元素。
图2-76  创建集合的脚本示例

  不允许应用{}来定义一个空的集合,因为我们使用{}来定义一个字典。如果定义一个空的集合,必须要用set()函数。
  在图2-77中,当试图应用{}来创建一个集合时,输出其类型后,发现其类型是字典,而应用set()时,其类型才是集合。
图2-77  创建集合要注意的问题

  还可以通过set()强制进行类型转换,将列表、元组强制转换为集合,如图2-78所示。
图2-78  通过set()强制转换列表、元组为集合

  2.6.2  获取集合元素
  因为集合中的元素是无序的,所以我们不能像应用列表、元组那样通过索引来对它们进行访问。然而,可以使用in或者not in来判断某个元素是否在集合中,这将返回True或者False。
  如图2-79所示,我们定义了set1,它包含5个元素,即“熊猫”“熊猫鼠”“接吻鱼”“孔雀鱼”和“地图鱼”。print('接吻鱼' in set1)用于判断“接吻鱼”是否在set1中,显然,它是集合中的元素,因此输出“True”。同样,“孙悟空”不在set1中,故print('孙悟空' in set1)的输出为“False”,而print('孙悟空' not in set1)的输出为“True”。
图2-79  判断元素是否在集合中

  可以使用迭代方法输出集合中的元素,如图2-80所示。
图2-80  输出集合中的元素

  迭代语句的使用也许读者并不熟悉,没有关系,这部分内容将在后面章节详细介绍。

  2.6.3  添加集合元素
  集合对象提供的所有方法如图2-81所示。
图2-81  集合对象提供的所有方法

  在图2-81中,可以看到集合对象也有一个add()方法。
  可以使用add()方法向集合中添加元素,如图2-82所示。
图2-82  集合对象的add()方法的应用

  2.6.4  修改集合
  创建集合以后,如果要修改集合的元素内容,可以应用update()方法,如图2-83所示。
图2-83  修改集合的脚本示例

  当要修改的元素和集合中的元素相同时,它只出现一次,而当要修改的元素不在集合中时,把它添加到集合对象中。在图2-83中,“111”这个元素就不在集合中,因此执行update()方法后,把它添加到set1中。
  当然,还可以通过相关的并集、差集、对称差集等集合运算,来完成对原集合元素的修改。
  如图2-84所示,通过求并集再赋值的方式,改变了集合中的元素。集合的并集是指将两个集合的元素进行合并,若出现重复的元素,则在集合中只出现一次。
图2-84  通过集合运算来修改集合

  表2-2列出了集合的相关运算。
表2-2 集合的相关运算

  2.6.5  集合元素计数
  可以使用len()函数来实现对集合元素的计数。
  如图2-85所示,集合会自动去除重复元素,而应用len()函数进行集合元素计数时,重复的数据将只统计一次。
图2-85  集合元素计数方法

  2.6.6  删除集合或其元素
  可以使用集合对象的pop()、remove()或者clear()方法来删除集合的元素或者删除整个集合。
  对于字符串元素构成的集合,使用pop()方法后,将会随机删除集合中的一个元素,如图2-86所示。
图2-86  对集合使用pop()方法

查看《软件接口测试实战详解》全部连载章节
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号