【问题标题】:how multiple list comprehension works [duplicate]多个列表理解如何工作[重复]
【发布时间】:2021-10-30 15:22:30
【问题描述】:

在尝试使用列表推导打印多行和多列时,以下代码有效

X=[[x for x in range(y)] for y in range(3)]

但是这段代码不起作用

X=[x for x in range(y) for y in range(3)]

使用列表而不是直接循环有什么不同。通常对于多个循环,它从左到右工作。在这种情况下,循环是从右到左工作的,因此我们可以在 for 中声明 y 之前使用 y。

【问题讨论】:

  • 在这一行 X=[x for x in range(y) for y in range(3)] 你得到错误没有定义 y 你可以像下面这样写但是你的输出不同:X=[[x] for y in range(3) for x in range(y) ]
  • 除了链接的副本,请尝试treyhunner.com/2015/12/python-list-comprehensions-now-in-color。或者试试copying and pasting your planned question title into a search engine,它可以提供多个高质量的结果。您有多个金徽章,并且您的帐户已使用近 8 年;你现在应该知道这些技术和expectations
  • ...事实上,当我尝试该搜索查询时,我发现其中一件事是 您在不到一天前问了同样的问题,并用同样的重复项关闭了它链接.
  • @KarlKnechtel 我浏览了标记的链接,但找不到我的查询的答案。由于该问题已关闭以获得答案,因此我不得不发布新问题。我想知道当我将列表放在内部 for 循环中时,列表理解的工作方式有何不同。然后它从右到左工作,否则它从左到右工作。
  • 链接的副本准确地解释了发生了什么。您显然已经了解您从代码中得到的输出。 “工作方式有何不同”不是一个有意义的问题。如果你想看看它是如何实现的,源代码是可用的。如果您想知道为什么它被定义为这样工作,您应该询问负责人。

标签: python


【解决方案1】:

对于嵌套列表理解,从左到右迭代是可以的,因为它在 x 之前先迭代 y

但如果没有它,它需要从右到左,因为这样会说 y 未定义,因为 Python 从左到右运行。

那就试试吧:

X = [x for y in range(3) for x in range(y)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 2020-09-10
    • 2012-12-07
    相关资源
    最近更新 更多