问题标签 [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 - 在 Python 中创建没有变量“x in”(例如范围)的生成器表达式或列表推导
在 Python 中,有没有办法在没有“x in”变量的情况下编写这个列表理解(因为它完全未使用)?同样适用于生成器表达式。我怀疑这种情况经常出现,但我偶然发现了几次并且很想知道。
这是一个例子:
(也许,有没有更优雅的方式来构建它?)
python - 需要了解 Python 生成器对象
在下面的:
我知道 any(...) 里面是一个生成器对象。我不明白的是缺少括号 - 如果括号属于 any() 函数,那么生成器表达式周围不应该有另一组括号吗?
谢谢。
python - Python 生成器表达式 if-else
我正在使用 Python 解析一个大文件。我想做的是
我想为此使用生成器表达式 - 以节省内存。我正在输入实际代码。
python - 为什么这个列表理解比等效的生成器表达式更快?
我在 Windows 上使用 Python 3.3.1 64 位和这个代码片段:
与此相比,执行时间为 136 毫秒:
执行时间为 146 毫秒。在这种情况下,生成器表达式不应该更快或与列表理解的速度相同吗?
我引用 Guido van Rossum从 List Comprehensions 到 Generator Expressions:
...Python 3 中的列表推导和生成器表达式实际上都比 Python 2 中的要快!(并且两者之间不再存在速度差异。)
编辑:
我用 测量了时间timeit
。我知道这不是很准确,但我只关心这里的相对速度,当我用不同的迭代次数进行测试时,我的列表理解版本的时间一直在缩短。
python - 短路列表推导
在某些情况下,我想要 python 语法用于短路列表理解或生成器表达式。
这是一个简单的列表推导,以及 python 中的等效 for 循环:
该语言不支持短路的理解。建议的语法,以及 python 中的等效 for 循环:
它应该适用于任意迭代,包括无限序列,并且可以扩展到生成器表达式语法。我知道list(itertools.takewhile(lambda x: x != 'potato'), my_list)
作为一种选择,但是:
- 它不是特别pythonic - 不像while理解那样可读
- 它可能不如 CPython 理解那么高效或快速
- 它需要一个额外的步骤来转换输出,而这可以直接放入理解中,例如
[x.lower() for x in mylist]
- 连原作者都不太喜欢。
我的问题是,对于为什么将语法扩展到这个用例不是一个好主意,是否存在任何理论上的问题,或者它只是不可能,因为 python 开发人员认为它很少有用?这似乎是对语言的简单补充,也是一个有用的功能,但我可能忽略了一些隐藏的微妙之处或复杂性。
python - 生成器表达式调用返回列表的函数
我有一个返回列表的函数,我想在使用紧凑的生成器表达式(或任何漂亮而紧凑的东西)在列表上调用时合并该函数的输出
假设我有一个 def foo(bar):
where bar 是整数,它在一些疯狂的复杂计算之后返回一个列表。
arr=[9,1,5,1,7,1]
在一行代码之后,我怎样才能获得希望?
arr=[foo(x) for x in arr]
给了我[[9,1,5],[1],[7,1]]
而且我不想再写一行来推出列表中的列表。
python - 无需在 python 中复制代码即可将生成器更改为列表理解的简单方法?
我有这样的事情:
生成器用于避免将整个文件读入内存,但有时读取整个文件正是我们所希望的(即列表理解)。如何在没有太多额外代码的情况下改变这种行为?目标是能够在这两种模式之间进行选择。我听说python有一些叫做descriptor的特性,可以用来修改函数而不接触函数体,在这种情况下是否合适?如果是,这里应该如何使用?
python - 如何识别生成器与列表理解
我有这个:
我的问题是,在这种情况下,我是否将列表理解或生成器对象传递给 sum ?我该怎么说?对此有一般规则吗?
还要记住sum 本身需要一对括号来包围它的参数。我认为上面的括号是用于求和而不是用于创建生成器对象。你不同意吗?