问题标签 [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 - 如何对集合的可变大小部分求和?
我想为不同大小的部分计算集合的总和:
我想知道我想出的解决方案是否是实现我想要的最“pythonic”(优雅、可读、简洁)的方式......
特别是,我想知道是否有办法摆脱单独的迭代器“itd”,以及使用切片是否更容易?
python - 如何过滤生成器表达式中的值
我下面的函数是计算嵌套字典的深度。
我想修改它以不包括id
在深度计算中具有值的键。如果我在生成器表达式中使用三元组,则该程序可以工作:
但我似乎无法通过过滤使其工作:
为什么我的过滤器不工作,我该如何让它工作?
python - 将元组的可迭代转换为每个元素的可迭代(Python)
我有一个delta
生成两个数字的元组的迭代,(dx, dy)
我想计算每个数字的总和。以下内容不起作用,因为delta
在第一次迭代后处理。
任何想法?我正在考虑以某种方式变成anddelta
的两个可迭代对象,但到目前为止还没有达到任何目标。dx
dy
python - 当哨兵连续出现两次时停止迭代的简洁方法
我正在寻找一种方法来生成一个迭代器,该迭代器接受一个可迭代的并只传递值,直到一个标记值直接连续出现两次。类似于iter(a.__next__, sentinel)
只有哨兵必须出现两次。
以下相当平淡无奇的代码可以解决问题,但肯定有一个不那么冗长的解决方案吗?
所以把它放在一个具体的问题上:
有没有办法避免使用成熟的生成器并使用可能itertools
或生成器表达式来实现相同的目标?
这里有两个例子:
请注意,此问题类似,但缺少发电机角度。
python - 类定义中的python生成器表达式
我正在 Python 2.7.13 中编写一个简单的类,但遇到了一个令人惊讶的错误:
除了定义 B3 的行之外,上述所有工作都给出了NameError: global name 'T' is not defined
.
我很好奇为什么那条线是唯一给出错误的线。我一直在写tuple(...)
,好像它等同于tuple([...])
但似乎它们毕竟不一样。
我还检查了 Python 3.4.3 在定义的行上给出了一个错误B1
,B2
并且B3
至少看起来更一致。
python - 重用生成器表达式
生成器表达式是一个非常有用的工具,与列表推导相比有一个巨大的优势,那就是它不会为新数组分配内存。
我在使用生成器表达式时面临的问题是,我最终只能编写列表推导式,它只能使用一次这样的生成器:
上面的代码说明了生成器表达式如何只能使用一次。这是当然的,因为生成器表达式返回生成器的一个实例,而不是定义一个可以一次又一次实例化的生成器函数。
有没有办法在每次使用生成器时克隆它,以使其可重用,或者使生成器表达式语法返回生成器函数而不是单个实例?
python - 列表理解中的生成器表达式未按预期工作
以下代码产生预期的输出:
但是,当我改用生成器表达式时,会得到不同的结果:
我知道生成器表达式只能使用一次,但是我无法推理为什么在这种情况下我会两次获得相同的列表,特别是因为生成器对象似乎是唯一的。
我在这里想念什么?这是在 Python 3.6.5 上测试的。
python - 通过带有条件的生成器表达式分配两个变量?
下面的代码有一个包含各种奶酪及其数量的字典。根据预先确定的销售项目清单,代码会打印出销售的奶酪总量与全价的对比。
我正在使用生成器表达式来计算总数,但我想知道是否有一种方法可以压缩我的代码以使用某种 if-else 条件同时分配sale_count
和变量,因为生成器的代码实际上是full_price_count
相同的。
python - 为什么这条线不在 python 中打印 123...n?
最近我开始学习 python 编程语言,但在打印 123..n 序列时遇到了困难:
我得到了这个输出:
预期输出:
1234....n
(注意:仅连续输出)
generator-expression - 如何在 python 中使用生成器表达式来创建奇数列表?
我将如何将下面的程序更改为产生相同结果的生成器表达式?