问题标签 [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.
python - 有没有一种更简洁的方法来获得第一次出现的东西?
我有一个包含许多内容的列表:
我想得到满足谓词的列表中的第一个项目,比如说len(item) > 2
。有没有比 itertools 的 dropwhile 和 next 更简洁的方法呢?
一开始我确实使用[item for item in lista if len(item)>2][0]
过,但这需要python首先生成整个列表。
python - 距离度量的组合优化
我有一组轨迹,由沿轨迹的点组成,并具有与每个点关联的坐标。我将这些存储在 3d 数组中(轨迹、点、参数)。我想找到在这些轨迹的可能成对组合之间具有最大累积距离的一组 r 轨迹。我认为正在工作的第一次尝试如下所示:
这需要很长时间,因为 num_traj 可以在 500-1000 左右,而 r 可以在 5-20 左右。k 是任意的,但通常可以达到 50。
为了变得超级聪明,我将所有内容都放入了两个嵌套列表推导中,大量使用了 itertools:
除了非常难以阅读(!!!)之外,它还需要很长时间。任何人都可以提出任何改进的方法吗?
python - 如何将 itertools.product 应用于列表列表的元素?
我有一个数组列表,我想获得数组中元素的笛卡尔积。
我将用一个例子来使这个更具体......
itertools.product 似乎可以解决问题,但我被困在一个小细节上。
如果我做
我明白了
但我想要得到的是
我尝试了一些不同的东西:
他们都给了我cp0而不是cp1。
有任何想法吗?
提前致谢。
python - 当提供一个空列表时, itertools.product() 应该产生什么?
我想这是一个学术问题,但第二个结果对我来说没有意义。不应该和第一次一样彻底空吗?这种行为的理由是什么?
更新
感谢所有的答案 - 非常有用。
Wikipedia 对Nullary Cartesian Product的讨论提供了明确的声明:
无集合的笛卡尔积 ... 是包含空元组的单例集合。
以下是一些代码,您可以使用这些代码来解决 sth 的有见地的答案:
python - python 是否有非惰性版本的 itertools.groupby?
我不需要 itertools.groupby 的懒惰。我只想将我的列表分组为列表的字典,如下所示:
是否有一个标准功能已经这样做了?
python - 当键值在可迭代的元素中时如何使用itertools.groupby?
为了说明,我从一个 2 元组列表开始:
产量:
试图调查原因:
即使这会给我相同的输出:
我想得到类似的东西:
我认为这是因为键在列表内的元组内,而实际上元组作为一个移动。有没有办法达到我想要的输出?也许groupby()
不适合这个任务?
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 个”数字从何而来?这将来自他对他想要哪一行的选择。
python - 如何生成预先解包的清单?
我有一个在itertools.groupby
操作中创建的列表:
例如,如果subset_of_grp
结果是[1, 2, 3, 4]
and [5, 6, 7, 8]
:
会打印出来:
现在,回到我的函数定义。显然以下是语法错误(*
运算符):
我希望相同 循环的以下结果print
不带[list]
括号:
请注意,print
此处仅用于说明目的。tuple
我还有其他可以从简化结构中受益的功能。
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
python - 复制可迭代对象的 Pythonic 方式
对于我正在处理的一个小项目,我需要循环浏览一个列表。对于这个循环的每个元素,我必须通过同一个列表开始另一个循环,前一个元素作为新循环的第一个元素。例如,我希望能够产生这样的东西:
我认为在每个 .next() 之后复制 itertools.cycle 会保存当前状态,这样我就可以使用“外部”循环中的元素开始新循环。甚至“将循环指针”“重置”到较旧的位置。我尝试了以下方法:
但收到此错误:
我知道有很多不同的方法可以实现我想要的,但我正在寻找一些简短、清晰和 python 的代码。也许有人有另一个想法,甚至是一个片段?无法复制迭代器对象这一事实引起了我的兴趣。在需要可迭代副本的情况下是否有最佳实践?还是一般来说复制迭代是愚蠢和无用的?