当前位置:   article > 正文

自动化测试进阶之Python推导式的使用!

自动化测试进阶之Python推导式的使用!

一.什么是推导式

Python 中的推导式是利用简洁的语法从一个已有的列表(或任何可迭代的对象)推导出一个新列表的一种构建方式。除了列表推导式之外,Python 还支持集合(set)推导式,字典(dict)推导式和生成器推导式。

二.推导式的优点

1.代码更加简洁

使用推导式可以用一行代码代替典型的多行循环语句,使代码看起来更加干净和优雅。

2.可读性更强

对于熟悉推导式的 Python 的人而言,推导式的结构使得目的更加一目了然,有助于快速理解代码要做什么。

3.执行效率更高

推导式通常比相应的for循环更加高效。在 Python 内部,推导式的执行过程进行了优化,执行速度往往比手动循环快。

4.内置的过滤功能

在推导式中,可以很容易地使用 if 语句来过滤想要的元素,这使得在构建新的列表、集合或字典时不需要写额外的条件判断代码。

5.灵活性和通用性

列表、集合、字典以及生成器推导式使得同一结构的数据转换变得非常方便,这四种推导式几乎可以用在任何序列构建的场合。

6.易于结合使用

推导式可以相互嵌套,比如在列表推导式中使用字典推导式,或是在集合推导式中使用列表推导式等等,使得复杂数据结构的生成更为直观。

7.动态数据生成

对于生成器推导式,它们支持惰性计算(只有在用到的时候才会处理),适合处理大数据集,因为它们不需要在内存中存储整个数据集,而是按需生成数据。

  1. 现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
  2. 如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
  3. 可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
  4. 分享他们的经验,还会分享很多直播讲座和技术沙龙
  5. 可以免费学习!划重点!开源的!!!
  6. qq群号:691998057【暗号:csdn999

三.推导式的类型

1.列表推导式

列表推导式是最常见的推导式,它提供了构造列表的快捷方式,使代码更加简洁明了。基本语法结构如下:

[expression for item in iterable if condition]

这里的expression是列表推导式的核心,表示新列表中的元素,可以是对item的操作;item是从iterable中取出的元素;if condition是可选的,用于筛选满足条件的元素。

例子:

  • 创建一个列表,包含0到9的平方。

  1. # coding=utf-8 
  2. '''
  3.  @Author  : TesterRoad
  4.  @Time    : 2024/4/14
  5.  @Desc    : 列表推导式:创建一个列表,包含0到9的平方
  6.  @Software: PyCharm
  7. '''
  8. squares = [x**2 for x in range(10)]
  9. print(squares)
  10. # 输出: [0149162536496481]
  • 提取一个字符串列表中长度大于2的字符串。

  1. # coding=utf-8 
  2. '''
  3.  @Author  : TesterRoad
  4.  @Time    : 2024/4/14
  5.  @Desc    : 列表推导式:提取一个字符串列表中长度大于2的字符串
  6.  @Software: PyCharm
  7. '''
  8. words = ['hello''my''name''is''TesterRoad']
  9. long_words = [word for word in words if len(word) > 2]
  10. print(long_words)
  11. # 输出: ['hello', 'name', 'TesterRoad']

2.集合推导式

集合推导式适用于创建集合(不重复元素的集合),遵循的基本格式与列表推导式类似,但使用的是花括号。

{expression for item in iterable if condition}

例子:

  • 创建一个集合,包含0到9的平方,自动去重。

  1. # coding=utf-8
  2. '''
  3.  @Author  : TesterRoad
  4.  @Time    : 2024/4/14
  5.  @Desc    : 集合推导式:创建一个集合,包含0到9的平方,自动去重
  6.  @Software: PyCharm
  7. '''
  8. squares = {x**2 for x in range(-910)}
  9. print(squares)
  10. # 输出: {6410364916814925}
  • 从两个字符串中提取共有的字符。

  1. # coding=utf-8 
  2. '''
  3.  @Author  : TesterRoad
  4.  @Time    : 2024/4/14
  5.  @Desc    : 集合推导式:从两个字符串中提取共有的字符
  6.  @Software: PyCharm
  7. '''
  8. = "TesterRoad"
  9. = "derivation"
  10. common_letters = {char for char in a if char in b}
  11. print(common_letters)
  12. # 输出: {'d''e''t''o''a''r'}

3.字典推导式

字典推导式用于创建字典,其基本格式如下:

{key_expression: value_expression for item in iterable if condition}

其中,key_expression代表字典键的表达式,value_expression代表字典值的表达式。

例子:

  • 将一个字符串列表转换为一个字典,其中列表项为键,其长度为值。

  1. # coding=utf-8 
  2. '''
  3.  @Author  : TesterRoad
  4.  @Time    : 2024/4/14
  5.  @Desc    : 字典推导式:将一个字符串列表转换为一个字典,其中列表项为键,其长度为值
  6.  @Software: PyCharm
  7. '''
  8. words = ['hello''my''name''is''TesterRoad']
  9. word_lengths = {word: len(word) for word in words}
  10. print(word_lengths)
  11. # 输出: {'hello'5'my'2'name'4'is'2'TesterRoad'10}
  • 翻转字典的键和值。

  1. # coding=utf-8 
  2. '''
  3.  @Author  : TesterRoad
  4.  @Time    : 2024/4/14
  5.  @Desc    : 字典推导式:翻转字典的键和值
  6.  @Software: PyCharm
  7. '''
  8. original_dict = {'name'"TesterRoad"'age'18'tel'1234567890}
  9. inverted_dict = {valuekey for keyvalue in original_dict.items()}
  10. print(inverted_dict)
  11. # 输出: {'TesterRoad''name'18'age'1234567890'tel'}

4.生成器推导式

生成器推导式是一种特殊的推导式,用于创建生成器对象。生成器推导式的语法如下:

(expression for item in iterable)

在生成器推导式中,expression 是对可迭代对象中每个元素应用的表达式,item 是迭代过程中的变量,iterable 是可迭代对象。生成器推导式会根据迭代过程逐个生成元素,而不是一次性创建所有元素,这使得生成器非常适合处理大型数据集或无限序列。

例子:如何使用生成器推导式创建一个生成器来生成奇数的平方。

  1. # coding=utf-8 
  2. '''
  3.  @Author  : TesterRoad
  4.  @Time    : 2024/4/14
  5.  @Desc    : 生成器推导式:如何使用生成器推导式创建一个生成器来生成奇数的平方
  6.  @Software: PyCharm
  7. '''
  8. odd_squares = (x**2 for x in range(10if x % 2 != 0)
  9. # 迭代生成器以获取元素
  10. for number in odd_squares:
  11.     print(number)  # 输出 19254981

四.注意

使用推导式可以使得代码不仅更加简洁,还能提高编写效率,同时也容易阅读理解。

不过,当推导式变得过于复杂时,它们可能会变得难以理解,所以在这种情况下可能需要考虑进行拆分或者使用传统的循环结构。

在数据量非常庞大时,可能还需要考虑推导式带来的内存影响,这时候生成器表达式会是一个更好的选择。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/430822
推荐阅读
相关标签
  

闽ICP备14008679号