问题标签 [generator]

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.

0 投票
1 回答
251 浏览

python - 在 Python 中使用多层生成器的性能注意事项?

使用链接在一起的大量生成器而不是仅使用单个生成器是否有任何性能考虑。

例如:

显然,调用A(objects)将通过三个不同的生成器,但在许多情况下,如果有不同的生成器来处理不同的过滤,它会使代码更好地重用。谁能指出使用这种技术对性能有重大影响?

0 投票
2 回答
1297 浏览

python - 生成器函数被执行两次?

我正在使用 python 生成器函数为我提供当前目录中的图像列表。但是我看到该函数两次而不是一次给出整个列表,我不知道为什么。我正在使用 Python PIL 库来创建批量缩略图。

谁能指出我正确的方向?

脚本:

此时脚本的输出(带有一些测试图像)是:

虽然它应该是:

如您所见,生成器函数两次返回列表(我验证了它,它只被调用一次)。

@heikogerlach:os.walk 找不到缩略图,因为我正在遍历当前目录的文件名,并且缩略图被写入当前目录的名为“thumb”的子文件夹中。该列表是在将缩略图写入“thumb”目录之前生成的,我验证(使用 WinPDB)缩略图不包含在列表中。

@S.Lott:感谢您的建议。os.path.join 解决了这个问题。

0 投票
3 回答
10392 浏览

python - django 中的“生成器对象”是什么?

我正在使用 Django 投票包,当我在 shell 中使用 get_top() 方法时,它返回类似“0x022f7AD0 处的生成器对象,我以前从未见过这样的东西,你如何访问它,它是什么?

我的代码:

注意:我认为get_top只会返回一个不错的 myModel 列表,我可以执行类似v.name等的操作

0 投票
1 回答
243 浏览

python - Paste.Template 有替代品吗?

我已经厌倦了粘贴模板的所有小问题,维护模板很糟糕,它无法更新旧项目并且很难测试。

我想知道是否有人知道快速启动生成器的替代方案,因为它们已被证明是有用的。

0 投票
4 回答
1690 浏览

python - Python 递归生成器的范围

大家好,我正在使用递归生成器来创建数字的固定整数分区,但我对范围问题感到困惑。

该代码类似于此代码段。

我的困惑如下图所示。

我可以简单地通过使用数组的副本(例如传递a[:]给递归调用)得到正确的答案,但我仍然不明白上述行为。为什么打印语句和产量值不同?

0 投票
1 回答
731 浏览

ruby-on-rails - 在自定义生成器中生成嵌套路由

我正在 Rails 中构建一个生成器,它生成一个前端和管理控制器,然后将路由添加到路由文件中。我可以让前端使用这个:

但我不知道如何为嵌套的管理路由(admin/controller_file_name)做同样的事情。有人知道如何生成这些路线吗?

0 投票
10 回答
12036 浏览

python - 如何使用生成器在 Python 中生成没有“反向重复”的列表排列

这与问题如何在 Python 中生成列表的所有排列有关

如何生成符合以下条件的所有排列:如果两个排列彼此相反(即 [1,2,3,4] 和 [4,3,2,1]),它们被认为是相等的,并且只有其中一个应该是最终结果

例子:

我正在排列包含唯一整数的列表。

结果排列的数量会很高,所以如果可能的话,我想使用 Python 的生成器。

编辑:如果可能的话,我不想将所有排列的列表存储到内存中。

0 投票
7 回答
2403 浏览

python - 加入一组产生 Python 迭代器的有序整数

这是一个看似简单的问题:给定一个迭代器列表,这些迭代器按升序产生整数序列,编写一个简洁的生成器,它只产生出现在每个序列中的整数。

昨晚阅读了几篇论文后,我决定用 Python 破解一个完全最小的全文索引器,如图所示(尽管那个版本现在已经很老了)。

我的问题在于该search()函数,它必须遍历每个发布列表并仅生成出现在每个列表上的文档 ID。正如您从上面的链接中看到的那样,我当前的非递归“工作”尝试非常糟糕。

示例

应该产生:

至少有一个优雅的递归函数解决方案,但如果可能的话,我想避免这种情况。但是,涉及嵌套生成器表达式、itertools滥用或任何其他类型的代码高尔夫的解决方案非常受欢迎。:-)

应该可以安排该函数只需要与最小列表中的项目一样多的步骤,而无需将整个整数集吸入内存。将来,这些列表可能会从磁盘读取,并且大于可用 RAM。

在过去的 30 分钟里,我在舌尖有了一个想法,但我无法将其完全融入代码中。请记住,这只是为了好玩!

0 投票
1 回答
319 浏览

ruby-on-rails - 如何将开关添加到自定义 Rails 生成器?

我正在编写的生成器的一部分在所有情况下都不需要,所以我需要添加一个开关,以便我可以指定它是否运行 - 类似于 --skip_migration 开关。

我应该如何实施呢?

0 投票
3 回答
703 浏览

python - 从生成器生成

我有一个生成器,它将一个数字作为参数并产生其他数字。我想使用这个生成器产生的数字并将它们作为参数传递给同一个生成器,创建一个一定长度的链。

例如,mygenerator(2) 产生 5、4 和 6。将 mygenerator 应用于这些数字中的每一个,一遍又一遍地应用于产生的数字。生成器总是产生比作为参数传递的更大的数字,并且对于 2 个不同的数字将永远不会产生相同的数字。

我的发电机(2):4 5 我的发电机(4):10 11 12 我的发电机(5):9 300 500

所以集合 (9,10,11,12,300,500) 与原始数字 2 的“距离”为 2。如果我将其应用于数字 9,我将得到一组与原始数字 2 的距离为“3”的数字。

基本上我想要的是创建一个与给定数字具有指定距离的集合,但我在弄清楚如何在 Python 中做到这一点时遇到了问题。非常感谢帮助:)