首页  >  文章  >  后端开发  >  Python 中的嵌套列表推导式如何工作以及它们在循环形式中的等价物是什么?

Python 中的嵌套列表推导式如何工作以及它们在循环形式中的等价物是什么?

DDD
DDD原创
2024-10-29 14:30:02453浏览

How do Nested List Comprehensions in Python Work and What are Their Equivalents in Loop Form?

理解嵌套列表推导式

列表推导式为在 Python 中操作集合提供了简洁而优雅的语法。通过组合嵌套的 for 循环,可以轻松构建复杂的数据结构。以下是嵌套列表理解如何工作的详细分解:

考虑给定的列表理解:

<code class="python">[(min([row[i] for row in rows]),max([row[i] for row in rows])) 
for i in range(len(rows[0]))]</code>

此代码相当于以下循环:

<code class="python">result = []
for i in range(len(rows[0])):
  innerResult = []
  for row in rows:
    innerResult.append(row[i])
  innerResult2 = []
  for row in rows:
    innerResult2.append(row[i])
  tuple = (min(innerResult), max(innerResult2))
  result.append(tuple)</code>

一般来说,以下形式的嵌套列表理解可以翻译为:

<code class="python">[exp2([exp1 for x in xSet]) for y in ySet]</code>

对于更简单的情况,例如:

<code class="python">result = []
for y in ySet:
  innerResult = []
  for x in xSet:
    innerResult.append(exp1)
  exp2Result = exp2(innerResult)
  result.append(exp2Result)</code>

它相当于:

<code class="python">[exp1 for x in xSet for y in ySet] </code>

而,

<code class="python">result = [] 
for x in xSet:
  for y in ySet: 
    result.append(exp1)</code>

相当于:

<code class="python">[[exp1 for x in xSet] for y in ySet]</code>

需要注意的是,for 循环嵌套在单个列表理解始终是从左到右。例如:

<code class="python">result = []
for y in ySet:
  innerResult = []
  for x in xSet:
    innerResult.append(exp1)
  result.append(innerResult)</code>

此代码将不起作用,因为内部循环变量“row”未在外部循环中定义。正确的形式是:

<code class="python">[item for item in row for row in matrix] </code>

以上是Python 中的嵌套列表推导式如何工作以及它们在循环形式中的等价物是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn