列表——软件接口测试实战详解(10)

发表于:2021-5-27 09:29

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

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

  2.3  列表
  有时候,我们需要将一些数据存储起来,以备在后续使用这些数据。如果你学习过C、Pascal或者Java等语言,相信你一定知道一个重要的概念——数组。数组可以将同一类型的多个数据存储起来,但是Python中不存在数组的概念,而有一个更加强大的对象,就是列表(list)。列表是一个有序的序列结构,序列中的元素可以是不同的数据类型。

  2.3.1  创建列表
  在Python中经常会使用列表,那么如何创建列表呢?创建列表和创建变量很类似,只要在等号后面用中括号括起来数据就可以了,这些数据之间用逗号进行分隔,如alist= [1,2,3,4,5,6,7,8,9,0]就是一个列表。如果要定义一个空的列表,则中括号中不包含任何数据即可,如alist=[]就是一个不包含任何元素的空列表。当然,列表中也可以包含不同类型的数据,如alist=[1,2,'abc','456abc'],列表中还可以包含列表元素,如alist=[1,2,'abc',[1,2,3,'def'],'fed','test'],在这个alist列表变量中,我们就能看到它又包含了列表元素,即[1,2,3,'def']列表。
  在IDLE中通过以下代码创建列表。
  alist=[1,2,3,4,5,6,7,8,9,0]
  print(alist)
  alist=[1,2,'abc','456abc']
  print(alist)
  alist=[1,2,'abc',[1,2,3,'def'],'fed','test']
  print(alist)

  执行结果如图2-29所示。
图2-29  创建列表的结果

  2.3.2  通过索引获取列表元素
  上一节介绍了如何创建列表,创建列表以后,如何获取列表的元素呢?以list1= [1,2,3,4,5,6,7,8,9,0]为例,为了将列表中的“4”这个元素取出来,首先看一下它的索引位置。有一点请读者一定要记住,Python编程语言中在涉及列表时,第一个元素的索引是从0开始的。也就是说,要获取list1中的第一个元素“1”,可以使用list1[0];要获取第二个元素“2”,则使用list1[1]。获取“4”这个元素的代码与执行结果如图2-30所示。
图2-30  通过索引获取列表元素的示例代码与执行结果

  那么,如何获取list1中的“0”元素呢?除了上面介绍的按照从小到大的索引顺序(即list1[9])获取该元素之外,还可以按照倒序索引来获取,即使用list1[-1],此时从末尾的元素开始获取。若要获取列表list1中“9”这个元素,则使用list1[-2],以此类推。相关代码与执行结果如图2-31所示。
图2-31  以倒序索引获取列表元素的示例代码与执行结果

  从图2-31中,可以看到当索引值超出了列表长度时(以list1列表为例,它有10个元素,若输入list1[10]或者list1[-11]时,它们的索引值都超出了列表list1的长度),Python将会给出“IndexError: list index out of range”(即“索引错误:列表索引超出范围”)的提示信息。

  2.3.3  通过切片获取列表元素
  前面介绍了如何获取列表中的某一个元素,那么有没有办法一次获取列表中的多个元素呢?
  回答是肯定的,在Python中,可以应用列表切片来获取列表中的一个或者多个元素。例如,可以通过以下代码获取List1中所有鱼类数据,执行结果如图2-32所示。
  List1=['熊猫','熊猫鼠','接吻鱼','孔雀鱼','地图鱼']
  print(List1[1:5])

  原来应用切片在列表中获取多个元素这么简单!是的,切片的应用极大地减轻了程序员的工作量,在应用时,只需要用冒号来隔开两个索引值,即,列表变量名称[起始索引:终止索引+1]。为什么列表切片的结束位置对应的是“终止索引+1”?
  如图2-33所示,我们可以看到List1中一共有5个元素,如果输入的是print(List1 [1:4]),则输出的是['熊猫鼠', '接吻鱼', '孔雀鱼'],并没有包含List1中第4个索引对应的元素“地图鱼”。如果想输出包括“地图鱼”在内的所有鱼类信息,就应该使用print(List1[1:5]),即列表变量名称[起始索引:终止索引+1]。
图2-32  通过切片获取列表元素的示例代码1与执行结果

图2-33  通过切片获取列表元素的示例代码2与执行结果

  下面给出一段代码。
  List1=['熊猫','熊猫鼠','接吻鱼','孔雀鱼','地图鱼']
  print(List1[:4])
  print(List1[:])
  print(List1[::-1])
  print(List1[::2])

  如果没有指定列表切片的起始索引,会默认为0,即print(List1[:4])完全等价于print(List1[0:4])。
  如果既没有指定起始索引位置,也没有指定终止索引,那么代表列表中的所有元素。
  print(List1[::?1])会输出什么呢?这条脚本语句又多了一个冒号和一个参数,这个参数是步长,在不指定该参数时,该值默认为1。测试人员都有一颗好奇的心,我们把参数变成了“?1”,看看执行结果是什么。['地图鱼', '孔雀鱼', '接吻鱼', '熊猫鼠', '熊猫']就是它的执行结果,它将列表中的元素进行了反转,即列表中最后一个元素变成了第一个元素,列表中的倒数第二个元素变成了第二个元素……列表中第一个元素变成了最后一个元素。在Python中实现列表元素的反转很容易。
  如果步长为2,则每2个元素取值1次。以List1为例,其元素为['熊猫', '熊猫鼠', '接吻鱼', '孔雀鱼', '地图鱼'],先取索引为0的第一个元素,即“熊猫”,而后开始计数,继续往下一个位置移动(索引为1的不取),接着移动到索引为2的位置并取值,即“接吻鱼”,而后继续往后走,重新开始计数,以此类推。
  上面的代码的执行结果如图2-34所示。
图2-34  通过切片获取列表元素的示例代码3与执行结果

  而没有返回两个值。

  2.3.4  添加列表元素
  由于列表对象被广泛地应用,因此列表中的数据会根据程序设计的需要发生变化,例如,向列表中添加元素、向列表中指定的索引位置添加元素、删除列表中的元素等。
  本节介绍如何向列表中添加元素。向列表中添加一个元素非常简单,可以使用append()方法。这里假设有一个包含3个元素的列表对象(List2),其元素包括“'金鱼','鲨鱼','黄花鱼'”,现在要往List2列表对象中加入一个新的元素“鳄鱼”,可以输入List2.append ('鳄鱼'),如图2-35所示。
图2-35  使用append()方法向列表中添加元素

  那么,如何往列表中指定的索引位置添加元素呢?用insert()方法就可以实现。这里假设有一个包含3个元素的列表对象(List2),其元素包括“金鱼”、“鲨鱼”、“黄花鱼”,现在要往List2的“鲨鱼”元素所在位置插入一个叫“带鱼”的元素,可以输入List2.insert(1,'带鱼'),如图2-36所示。
  如图2-36所示,我们发现索引为1的位置被“带鱼”给“霸占”了,而在该位置的元素及其后面的元素,按照先前的顺序均往后移动了1位。当使用insert()方法向列表对象中添加元素时,需要用到两个参数,第一个参数是要插入列表中的索引位置,第二个参数就是要插入的值。
图2-36  使用insert()方法向列表中特定索引位置添加元素

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号