python – 理解列表理解

python – 理解列表理解,第1张

概述我最近被介绍列出理解,然而,我不确定我完全理解它们. 所以,我通过文档和谷歌进行了快速搜索. 我在数据结构上找到了docs部分. https://docs.python.org/2/tutorial/datastructures.html 虽然这给了我一个关于它们如何工作的想法,但我称之为奇怪,我希望对它们如何运作有一个更成熟的理解. 以下是文档中的示例: >>>[(x, y) for x in 我最近被介绍列出理解,然而,我不确定我完全理解它们.

所以,我通过文档和谷歌进行了快速搜索.
我在数据结构上找到了docs部分.

@L_301_0@

虽然这给了我一个关于它们如何工作的想法,但我称之为奇怪,我希望对它们如何运作有一个更成熟的理解.

以下是文档中的示例:

>>>[(x,y) for x in [1,2,3] for y in [3,1,4] if x != y][(1,3),(1,4),(2,1),(3,4)]

如果我错了,请纠正我,但这就是我理解列表如何评估的方式.

>看起来列表理解从左到右进行评估.
>这种理解介绍了X和Y.
>然后按列表定义X和Y,并根据列表中的位置以及if条件进行评估.
>由于X被指定为第一个变量,就像嵌套for循环的外部一样,首先调用它并对Y的列表进行迭代.
> if条件使得理解只产生与X迭代通过Y列表不相似的对.

如果我的理解不正确,请纠正我.
我欢迎更复杂的理解例子.

解决方法 嵌套列表推导没有什么神奇之处.我想你还没有看到他们的简约!

这个:

#      X           A                   B               Ca = [(x,y)   for x in [1,3]   for y in [3,4]   if x != y]

只是语法糖:

__tmp = []for x in [1,3]:                   # A    for y in [3,4]:               # B        if x != y:                  # C            __tmp.append((x,y))    # Xa = __tmp

所以你把for … in …部分重新组装成嵌套for循环.然后取出ifs并将其嵌套在相应的for循环中;最后,你取第一部分(在这种情况下是(x,y))并嵌套在嵌套for结构的最深处.

当ifs出现在列表推导中的多个“阶段”时,这也很好,例如:

#      X         A                 B               C               Da = [(x,3]   if x >= 2   for y in [3,4]   if x != y]

将(desugars)翻译成:

__tmp = []for x in [1,3]:                     # A    if x >= 2:                        # B        for y in [3,4]:             # C            if x != y:                # D                __tmp.append((x,y))  # Xa = __tmp

再一次……它与在部件之间散布的冒号的理解完全相同,并且内部部分正好在前面. A B C D …部分的顺序始终相同且永不改变;它只是X部分从后面移动到前面.

总结

以上是内存溢出为你收集整理的python – 理解列表理解全部内容,希望文章能够帮你解决python – 理解列表理解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1193100.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存