问题标签 [generator-expression]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 有条件的列表理解
我有一个简单的清单。
我想使用列表理解从中创建一个新列表。
很简单,但是如果我只想对非零元素进行操作怎么办?
'if' 在列表推导中需要 'else',所以我想出了这个。
但理想的结果是。
我可以这样做
或使用“过滤器”和 lambda
如何使用列表推导获得此结果?
python - 可以修改此生成器表达式以匹配循环结果吗?
考虑这个 for 循环:
平面列表y
不是通过类似方式获得的
可以修改生成器表达式以返回平面列表吗?
python - 生成器理解,它添加不同数量的相同项目
鉴于:
生成器理解给出以下元组:
其中项目multi
出现两次True
和False
,而其他出现None
.
python - 过滤器或生成器的意外结果
这里有一个有趣的。当我使用或生成器发现一些意外结果时,我实际上是在为另一个问题写答案。filter
我有一个文件路径列表:
我在路径列表中创建了一组不同的目录:
现在我想制作一个生成器列表(甚至是生成器的生成器),每个生成器都包含paths
同一目录中的元素。所以我这样做:
跑完后我是不是很惊讶:
并获得以下内容:
这显然是错误的。然而,如果我使用以下句子:
打印循环显示预期的答案:
如果我使用filter
和/或map
代替生成器:
我也得到了错误的答案 编辑: /map
版本filter
确实有效。
这里发生了什么?
python - 为什么生成器表达式中的 `yield from` 会产生 `None`s?
我有以下代码:
输出是:
...等为什么会None
出现s?如果我有:
然后我得到了我所期望的:
...等等。此外,有没有办法将其编写为生成器表达式以获得与后者相同的结果?
python - Python 上下文管理器可以与生成器一起使用吗?
我正在尝试使用控制访问子目录的上下文管理器,将它与生成器表达式结合起来似乎非常优雅,但它似乎不起作用。有什么办法可以纠正这个问题,以便我可以将两者一起使用?
这是示例:
python - 使用多个(相似的)生成器表达式
在 csv 文件中,我试图用其他字符替换某些字符。
我当前的代码与此类似:
在这个例子中,我只使用了三个生成器表达式,但很容易不止这些。
有谁知道这样做的正确方法?我担心这种结构可能不是最快的(当然看起来也不是最优的)。
python - python生成器表达式的顺序
我有一个示例,其中 python 生成器表达式的迭代顺序似乎与类似的列表理解和生成器函数不同。
例如,代码
有输出
我希望生成器表达式产生一个有序的输出,就像它对列表理解所做的那样。生成器表达式是否有某些内容表明无法保证顺序?
为什么生成器表达式的顺序与其他表达式不同,即使构造几乎相同?它甚至与遍历字典的顺序不同,所以它似乎并没有推迟。
我在 Python 2 和 3 中看到了相同的行为。
python - next() 在 python 中的任何/全部都不能很好地发挥作用
我今天遇到了一个错误,该错误是因为我next()
用来提取一个值,而“未找到”会发出一个StopIteration
.
通常这会停止程序,但函数 using在迭代next
内被调用all()
,所以all
刚刚提前终止并返回True
。
这是预期的行为吗?有没有风格指南可以帮助避免这种事情?
简化示例:
python - 与列表推导相比,生成器表达式的工作量是否更少?
在重构一段代码时,我注意到了这一点:
反过来,load_products()
执行 SQL 查询,并且对于每个产品:
- 执行一些相对 CPU 开销较大的操作,并且:
- 用于
yield
将产品一一返回给调用者。
据我了解,列表推导和生成器表达式之间的区别在于,在列表推导的情况下,所有产品都将从数据库加载并进行处理,即使第一个产品是匹配的。
因此,如果我用这样的生成器表达式替换它:
它可以通过最终减少代码的工作来改进代码,即一旦找到匹配项,就不会从数据库加载下一个产品,也不会进行处理。
不过,可以肯定的是,我不太了解 Python。
我对吗?Python 会在找到匹配项后立即停止,还是两段代码都执行相同的操作并从数据库中加载每个产品?