当前位置: 首页 > 面试题库 >

Python-嵌套列表理解如何工作的解释?

丌官哲彦
2023-03-14
问题内容

我对此毫无疑问:

a = [1,2,3,4]
b = [x for x in a]

我以为是全部,但是后来我发现了以下片段:

a = [[1,2],[3,4],[5,6]]
b = [x for xs in a for x in xs]

这使b = [1,2,3,4,5,6]。问题是我很难理解中的语法[x for xs in a for x in xs],有人可以解释它的工作原理吗?


问题答案:

难以理解的“嵌套”理解。循环以与理解相同的顺序展开。

[leaf for branch in tree for leaf in branch]

这样有助于你进行思考。

for branch in tree:
    for leaf in branch:
        yield leaf


 类似资料:
  • 问题内容: 我有这个嵌套列表: 现在,我要做的是将列表中的每个元素转换为float。我的解决方案是这样的: 但这可以使用嵌套列表理解来完成吗? 我所做的是: 但是结果是一堆100的总数为2400。 任何解决方案,解释将不胜感激。谢谢! 问题答案: 这是使用嵌套列表理解的方法: 这将为你提供一个列表列表,与你开始时的列表类似,只是使用浮点数而不是字符串。如果你想要一个固定列表,则可以使用。

  • 问题内容: 我试图在一个内部列表中使用外部列表理解的值: 但是不幸的是,这会引发NameError,因为名称是未知的(尽管外部列表理解指定了该名称)。 这是Python的局限性(尝试过2.7.3和3.2.3)还是有充分的理由解释为什么它不起作用? 是否有计划摆脱限制? 是否有解决方法(可能我没有弄清楚一些不同的语法)来实现我想要的? 问题答案: 您在谈论列表 推导 ,而不是生成器表达式。 您需要交

  • 问题内容: 我想了解嵌套列表的理解。下面,我列出了一个列表理解表达式及其for循环等效项。 我不知道我的理解是否正确。 例如, 相当于 如果可以概括一下,我猜 表格可以翻译为以下内容。(我希望我是对的) 对于更简单的情况, 等于 而, 等于 我问了一个类似的问题,即用于复杂列表理解 的循环表达式的等效项。那里给出的答案是在理解了表单内部的内容之后重构了表单。 我想知道它是如何系统地工作的,因此我可

  • 问题内容: 解释我的问题的最好方法是举一个例子: example.py: 当我在python 2下运行它时,它工作正常,但是在python 3下,我得到了for类(但不是class ): 为什么只有class会引发a ,为什么只在Python 3下? 问题答案: 类作用域在Python 3中有点奇怪,但这是有充分理由的。 在Python 2中,迭代变量(以及您的示例中)从列表理解中泄漏出来,并将包

  • 假设我期望一个列表列表,其中内部列表具有不同的类型和长度,例如。G 如何使用argparse解析上述列表? 关于stackoverflow最有用的问题: 类似的问题也存在,最有用的问题在这里。但是在我的例子中,它们还不够好,因为它们忽略了列表嵌套了不同的数据类型和长度的事实。

  • 问题内容: 我了解简单列表理解的工作原理,例如: 而且我也了解嵌套列表的综合工作原理: 所以,当我尝试这样做 我期望这样: 但是我得到了: 所以我有更好的方法解决问题,这给了我我想要的 但是我不明白在第一个代码中返回9个元素 问题答案: 它有9个数字的原因是因为python对待 类似于 即,它是一个嵌套循环