python函数式编程之生成器表达式和列表推导式

生成器表达式和列表推导式是Python中用于快速创建列表和生成器的语法。它们在函数式编程中非常有用,可以简化代码并提高可读性。

代码示例:

1. 列表推导式的语法:

列表推导式的语法形式为`[expression for item in iterable if condition]`,其中`expression`是对`item`的操作或计算,`item`是可迭代对象中的每个元素,`condition`是一个可选的条件表达式

  1. # 列表推导式的示例

  2. numbers = [1, 2, 3, 4, 5]

  3. squared_numbers = [x ** 2 for x in numbers if x % 2 == 0]

  4. # 输出: [4, 16]

2. 生成器表达式的语法:

   生成器表达式的语法形式与列表推导式类似,但使用圆括号而不是方括号,形式为`(expression for item in iterable if condition)`。

  1. # 生成器表达式的示例

  2. numbers = [1, 2, 3, 4, 5]

  3. squared_numbers = (x ** 2 for x in numbers if x % 2 == 0)

  4. # 输出: <generator object <genexpr> at 0x7f1c5ef1d938>

3. 使用列表推导式创建新的列表:

   列表推导式可以根据现有列表或可迭代对象创建新的列表。

  1. # 使用列表推导式创建新的列表

  2. numbers = [1, 2, 3, 4, 5]

  3. squared_numbers = [x ** 2 for x in numbers]

  4. # 输出: [1, 4, 9, 16, 25]

4. 使用生成器表达式创建新的生成器:

   生成器表达式可以根据现有列表或可迭代对象创建新的生成器。

  1. # 使用生成器表达式创建新的生成器

  2. numbers = [1, 2, 3, 4, 5]

  3. squared_numbers = (x ** 2 for x in numbers)

  4. # 输出: <generator object <genexpr> at 0x7f1c5ef1d938>

5. 过滤列表中的元素:

   使用条件表达式可以过滤列表中的元素,只保留满足条件的元素。

  1. # 过滤列表中的元素

  2. numbers = [1, 2, 3, 4, 5]

  3. even_numbers = [x for x in numbers if x % 2 == 0]

  4. # 输出: [2, 4]

6. 对列表中的元素进行转换:

   在列表推导式中,可以对列表中的元素进行转换或操作。

  1. # 对列表中的元素进行转换

  2. numbers = [1, 2, 3, 4, 5]

  3. squared_numbers = [x ** 2 for x in numbers]

  4. # 输出: [1, 4, 9, 16, 25]

7. 使用生成器表达式进行惰性计算:

   生成器表达式可以进行惰性计算,只在需要时生成新的元素,节省内存和计算资源。

  1. # 使用生成器表达式进行惰性计算

  2. numbers = [1, 2, 3, 4, 5]

  3. squared_numbers = (x ** 2 for x in numbers)

  4. # 输出: <generator object <genexpr> at 0x7f1c5ef1d938>

8. 生成字典:

   列表推导式可以生成字典,其中包含键值对。

  1. # 生成字典

  2. numbers = [1, 2, 3, 4, 5]

  3. squared_dict = {x: x ** 2 for x in numbers}

  4. # 输出: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

9. 字符串操作:

   使用列表推导式可以对字符串进行操作,生成新的字符串。

  1. # 字符串操作

  2. string = "Hello, World!"

  3. uppercase_letters = [x.upper() for x in string if x.isalpha()]

  4. # 输出: ['H', 'E', 'L', 'L', 'O', 'W', 'O', 'R', 'L', 'D']

10. 处理文件内容:

    使用列表推导式可以快速读取文件内容并进行处理。

  1. # 处理文件内容

  2. with open("file.txt") as file:

  3. lines = [line.strip() for line in file if line.startswith("Important")]

以上是生成器表达式和列表推导式的详细介绍和10个实用的场景代码。它们在函数式编程中非常有用,可以减少代码量并提高代码的可读性和简洁性。

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

  • 22
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值