问题标签 [itertools]

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 回答
214 浏览

python - 有没有一种更简洁的方法来获得第一次出现的东西?

我有一个包含许多内容的列表:

我想得到满足谓词的列表中的第一个项目,比如说len(item) > 2。有没有比 itertools 的 dropwhile 和 next 更简洁的方法呢?

一开始我确实使用[item for item in lista if len(item)>2][0]过,但这需要python首先生成整个列表。

0 投票
5 回答
494 浏览

python - 距离度量的组合优化

我有一组轨迹,由沿轨迹的点组成,并具有与每个点关联的坐标。我将这些存储在 3d 数组中(轨迹、点、参数)。我想找到在这些轨迹的可能成对组合之间具有最大累积距离的一组 r 轨迹。我认为正在工作的第一次尝试如下所示:

这需要很长时间,因为 num_traj 可以在 500-1000 左右,而 r 可以在 5-20 左右。k 是任意的,但通常可以达到 50。

为了变得超级聪明,我将所有内容都放入了两个嵌套列表推导中,大量使用了 itertools:

除了非常难以阅读(!!!)之外,它还需要很长时间。任何人都可以提出任何改进的方法吗?

0 投票
3 回答
56847 浏览

python - 如何将 itertools.product 应用于列表列表的元素?

我有一个数组列表,我想获得数组中元素的笛卡尔积。

我将用一个例子来使这个更具体......

itertools.product 似乎可以解决问题,但我被困在一个小细节上。

如果我做

我明白了

但我想要得到的是

我尝试了一些不同的东西:

他们都给了我cp0而不是cp1

有任何想法吗?

提前致谢。

0 投票
2 回答
3465 浏览

python - 当提供一个空列表时, itertools.product() 应该产生什么?

我想这是一个学术问题,但第二个结果对我来说没有意义。不应该和第一次一样彻底空吗?这种行为的理由是什么?

更新

感谢所有的答案 - 非常有用。

Wikipedia 对Nullary Cartesian Product的讨论提供了明确的声明:

无集合的笛卡尔积 ... 是包含空元组的单例集合。

以下是一些代码,您可以使用这些代码来解决 sth 的有见地的答案

0 投票
2 回答
533 浏览

python - python 是否有非惰性版本的 itertools.groupby?

我不需要 itertools.groupby 的懒惰。我只想将我的列表分组为列表的字典,如下所示:

是否有一个标准功能已经这样做了?

0 投票
3 回答
9837 浏览

python - 当键值在可迭代的元素中时如何使用itertools.groupby?

为了说明,我从一个 2 元组列表开始:

产量:

试图调查原因:

即使这会给我相同的输出:

我想得到类似的东西:

我认为这是因为键在列表内的元组内,而实际上元组作为一个移动。有没有办法达到我想要的输出?也许groupby()不适合这个任务?

0 投票
2 回答
262 浏览

python - 使用 itertools 进行特殊类型的组合

我几乎完成了有人给我的任务,最初涉及轻松使用 itertools 中的 product() 函数。但是,该人要求它也应该做一些不同的事情,例如:

李=

[[1, 2, 3],
[4, 5, 6]]

一个常规的 product() 会给出类似:[1, 4], [1, 5], [1, 6], [2, 4], [2, 5], [2, 6], [3, 4 ] ...

它应该做的是:

执行常规 product(),然后从列表中的第一个元素添加下一项,依此类推。一套完整的例子是:

[[1, 4, 2]
[1, 4, 3],
[1, 5, 2],
[1, 5, 3],
[2, 4, 3],
[2, 5, 3],
[2 , 6, 3]]

在这种情况下我应该如何使用 itertools?

编辑:

如果我解释程序的目标可能会有所帮助:例如,用户将输入一个 5 行 x 6 列的数字列表。
一个正常的 product() 将产生一个 5 个数字的组合。这个人想要一个 6 位数的组合。这个“第 6 个”数字从何而来?这将来自他对他想要哪一行的选择。

0 投票
2 回答
227 浏览

python - 如何生成预先解包的清单?

我有一个在itertools.groupby操作中创建的列表:

例如,如果subset_of_grp结果是[1, 2, 3, 4]and [5, 6, 7, 8]

会打印出来:

现在,回到我的函数定义。显然以下是语法错误(*运算符):

我希望相同 循环的以下结果print不带[list]括号:

请注意,print此处仅用于说明目的。tuple我还有其他可以从简化结构中受益的功能。

0 投票
5 回答
7816 浏览

python - Python - Speed up generation of permutations of a list (and process of checking if permuations in Dict)

I need a faster way to generate all permutations of a list, then check if each one is in a dictionary.

If it helps, the lists are all going to be lists of strings. ['such as', 'this', 'one']

My solution works, but it's very slow. It could be that I need to stop using Python, but I thought I'd run it by you experts first!

Best, Gary

0 投票
1 回答
5942 浏览

python - 复制可迭代对象的 Pythonic 方式

对于我正在处理的一个小项目,我需要循环浏览一个列表。对于这个循环的每个元素,我必须通过同一个列表开始另一个循环,前一个元素作为新循环的第一个元素。例如,我希望能够产生这样的东西:

我认为在每个 .next() 之后复制 itertools.cycle 会保存当前状态,这样我就可以使用“外部”循环中的元素开始新循环。甚至“将循环指针”“重置”到较旧的位置。我尝试了以下方法:

但收到此错误:

我知道有很多不同的方法可以实现我想要的,但我正在寻找一些简短、清晰和 python 的代码。也许有人有另一个想法,甚至是一个片段?无法复制迭代器对象这一事实引起了我的兴趣。在需要可迭代副本的情况下是否有最佳实践?还是一般来说复制迭代是愚蠢和无用的?