软件测试|Python实用炫酷技能——推导式

简介: 软件测试|Python实用炫酷技能——推导式

在这里插入图片描述

Python推导式

判断一个程序员水平的高低,不能光看他的发量,也不能光看他的代码量,还要看他代码蕴含的思想,代码的质量。代码蕴含的思想主要体现在各种设计模式的运用上,而代码的质量就既要实现需求,又要保证代码的简洁优雅。保证代码质量是需要长期积累,养成良好的编程习惯,不断思考优化的。

今天就给大家介绍一种实用的保证代码简洁的武功—— Python 推导式。

什么是推导式

推导式 comprehensions(又称解析式),是 python 的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列。

看推导式的定义很抽象,下面我们来看看具体的例子,通过例子来学习常用的四种推导式。

列表推导式

我们先来看一个需求:

快速创建一个包含元素1-9的平方的列表

面对这个需求,我们通常的实现方式是这样的:

list = []
for i in range(1, 10):
    list.append(i*i)
print(list) # [1, 4, 9, 16, 25, 36, 49, 64, 81]

但是如果我们使用列表推导式,只需要一行代码就可以实现:

lis = [x * x for x in range(1, 10)]
print(list) # [1, 4, 9, 16, 25, 36, 49, 64, 81]

查看代码结构,我们可以发现:

变量名 = [表达式 for 变量 in 列表]

更复杂一些的例子:

list = [x * y for x in range(1, 10) for y in range(1, 10)]
print(list)
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 27, 36, 45, 54, 63, 72, 81]

这个是多个变量的类型,因此我们可以扩展上面的列表推导式:

变量名 = [表达式 for 变量 in 列表 for 变量 in xxx]

列表推导式还可以加上条件,变成这样

变量名 = [表达式 for 变量 in 列表 if 条件]

例如,快速创建一个包含1-100之间所有偶数的列表。

list = [i for i in range(1, 101) if i % 2 == 0]
print(list) 
# [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]

字典推导式

字典推导式的形式和列表推导式类似,语法也是类似的,只不过字典推导式返回的结果是字典。

变量名 = {key: value表达式}

来看一个实例,

dict = {x: x/2 for x in range(1,11) if x % 2 == 0}
print(dict)
# 输出: {2: 1.0, 4: 2.0, 6: 3.0, 8: 4.0, 10: 5.0}

集合推导式

集合推导式与列表和字典类似,所以这里直接写出来:

变量名 = {表达式 for 变量 in 列表 for 变量 in xxx}

或者带有条件:

变量名 = {表达式 for 变量 in 列表 if 条件}

实际应用,生成一个存储10以内偶数的集合

set = {x for x in range(10) if x % 2 == 0}
print(set)

# 输出 {0, 2, 4, 6, 8}

元组推导式

按照上述3个推导式的思路,我们先试着通过推导式输出一个元组,代码如下:

tup=(x for x in range(1,10))
print(tup)

# 输出: <generator object <genexpr> at 0x00000221A68C7BC8>

并没有如我们预期的那样生成元组,上面的代码返回的变量其实是一个生成器,并不是一个元组。其实没有真正的元组推导式,我们只能用一个类似的方法来生成元组。

上面代码进行一下小改进就可以生成元组了:

tup=tuple(x for x in range(1,10))
print(tup)

# 输出: (1, 2, 3, 4, 5, 6, 7, 8, 9)

在推导式前,加上tuple就可以达到我们的目标。

总结

这里介绍了四种 python 的推导式,主要是用来简化 循环的代码,生成不同的数据结构用的。当然,从这些基础的表达式语法出发,还可以运用到复杂的推导式,大家在写代码时留心使用就会发现它的强大之处。在面试时,也是一个炫技加分项!

相关文章
|
3月前
|
测试技术 数据处理 Python
Python列表推导式:简洁高效的数据处理利器
Python列表推导式:简洁高效的数据处理利器
211 80
|
2月前
|
数据采集 自然语言处理 分布式计算
大数据岗位技能需求挖掘:Python爬虫与NLP技术结合
大数据岗位技能需求挖掘:Python爬虫与NLP技术结合
|
10月前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
189 61
|
10月前
|
安全 测试技术 网络安全
如何在Python Web开发中进行安全测试?
如何在Python Web开发中进行安全测试?
|
3月前
|
测试技术 Python
Python测试报告生成:整合错误截图,重复用例执行策略,调整测试顺序及多断言机制。
如何组织这一切呢?你可以写一本名为“Python测试之道”的动作指南手册,或者创建一个包含测试策略、测试顺序、多断言机制的脚本库。只要你的测试剧本编写得足够独到,你的框架就会像一位执行任务的超级英雄,将任何潜伏于代码深处的错误无情地揪出来展现在光天化日之下。这些整理好的测试结果,不仅有利于团队协作,更像冒险故事中的精彩篇章,带给读者无尽的探索乐趣和深刻的思考。
92 10
|
3月前
|
测试技术 Python
Python接口自动化测试中Mock服务的实施。
总结一下,Mock服务在接口自动化测试中的应用,可以让我们拥有更高的灵活度。而Python的 `unittest.mock`库为我们提供强大的支持。只要我们正确使用Mock服务,那么在任何情况下,无论是接口是否可用,都可以进行准确有效的测试。这样,就大大提高了自动化测试的稳定性和可靠性。
115 0
|
4月前
|
存储 数据采集 大数据
Python推导式进阶指南:优雅初始化序列的科学与艺术
本文系统讲解Python推导式的用法与技巧,涵盖列表、字典、集合推导式及生成器表达式。通过代码示例和性能对比,展示推导式在数据结构初始化中的优势:简洁高效、执行速度快30%-50%。文章分析基础语法、核心应用场景(如序列构造、键值对转换、去重运算)及嵌套使用,并探讨使用边界与最佳实践,强调可读性优先原则。最后指出,合理运用推导式能显著提升代码质量和处理效率,同时避免过度复杂化的陷阱。
86 0
|
6月前
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
|
6月前
|
存储 JSON API
Python测试淘宝店铺所有商品接口的详细指南
本文详细介绍如何使用Python测试淘宝店铺商品接口,涵盖环境搭建、API接入、签名生成、请求发送、数据解析与存储、异常处理等步骤。通过具体代码示例,帮助开发者轻松获取和分析淘宝店铺商品数据,适用于电商运营、市场分析等场景。遵守法规、注意调用频率限制及数据安全,确保应用的稳定性和合法性。

热门文章

最新文章

推荐镜像

更多