科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件Python数据驱动变换表推导式

Python数据驱动变换表推导式

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

表推导式通过功能性程序设计语言Haskell而普及,它为我们提供了一种使用Python语言编码的不同方法,它可以让我们将重心放在要转换的数据而不是使用的功能。

作者:builder.com.cn 2007年7月6日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

映像和过滤函数是功能性程序设计的基础,在使用表推导式时,我们可以以直接的方式使用其中的一个函数或同时使用这两个函数。如果我们想在一个表达式中同时使用映像和过滤函数,这很简单,如下面例子所示:

>>> [word.lower() for word in wordlist if not world.islower()]

['hello', 'world.', 'are', 'you?']

还可以在第一部分嵌套使用表推导式,如下所示:

>>> vowels = ['a','A','e','E','i','I','o','O','u','U']]

>>> [[letter for letter in word if letter not in vowels] for word in wordlist]

[['H', 'L', 'L'], ['W', 'r', 'l', 'd'], ['h', 'w'], ['R'], ['y', '?']]

或者在后半部分使用嵌套,将多个转换连接在一起,如下所示:

>>> [a.lower() for a in [b[i] for b in x for i in range(len(b))]]
['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd', 'h', 'o', 'w', 'a', 'r', 'e', 'y', 'o', 'u', '?']

正如我们所看到的,当我们开始将多个表推导式连接在一起的时候,问题就变得复杂了。因此,当在一个表达式中有多个表推导式时,将不同条件分解成多行书写是一个好主意。虽然我们并不总是需要嵌套使用表推导式,但是如果我们只是需要迭代使用多个列表的话,我们就可以将它们包含在一个表推导式中。

在下面的例子中,我们想要生成所有参加宴会的嘉宾的置换,就可以简单地使用一个表推导式完成该任务。

>>> guests = ['Chris', 'Brendan', 'Jimmy', 'Mel', 'Mike', 'Jess']
>>> [(seat1, seat2) for seat1 in guests for seat2 in guests if seat1 != seat2]
[('Chris', 'Brendan'), ('Chris', 'Jimmy'), ('Chris', 'Mel'), ('Chris', 'Mike'), ('Chris', 'Jess'), ('Brendan', 'Chris'), ('Brendan', 'Jimmy'), ('Brendan', 'Mel'), ('Brendan', 'Mike'), ('Brendan', 'Jess'), ('Jimmy', 'Chris'), ('Jimmy', 'Brendan'), ('Jimmy', 'Mel'), ('Jimmy', 'Mike'), ('Jimmy', 'Jess'), ('Mel', 'Chris'), ('Mel', 'Brendan'), ('Mel', 'Jimmy'), ('Mel', 'Mike'), ('Mel', 'Jess'), ('Mike', 'Chris'), ('Mike', 'Brendan'), ('Mike', 'Jimmy'), ('Mike', 'Mel'), ('Mike', 'Jess'), ('Jess', 'Chris'), ('Jess', 'Brendan'), ('Jess', 'Jimmy'), ('Jess', 'Mel'), ('Jess', 'Mike')]

这并不要替换程序中的每一个部分,只需要在你的Python工具箱里面添加一个表推导式即可。然后很快就可以看到它能够使你的程序比以前变得更短小、更清晰、更快速。因为它们重心在于数据而不是过程,而且他们很容易编写,即使当你的需求很复杂时也一样。

责任编辑:德东

查看本文国际来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章