问题标签 [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 - 在 Python 中结合 enumerate + itertools.izip
我想迭代 + 枚举 Python 中的两个列表。下面的代码看起来很难看。有没有更好的解决方案?
谢谢你。
python - Python中具有不可迭代类型的列表列表?
可能重复:
在 Python 中展平(不规则)列表列表
我在 SO 上看到了很多“如何展平列表列表”的问题,但我的问题仍然存在问题。我有一个具有不可迭代类型的列表列表,例如 NumPy float64 对象和整数。我的基本数据结构如下所示:
我一直在尝试像这样扁平化我的列表:
此代码抛出Type Error
float64 和整数不可迭代。如何展平具有不可迭代数据类型的列表?我想要的输出是:
谢谢您的帮助。
python - 结合 itertools 和多处理?
我有一个256x256x256
Numpy 数组,其中每个元素都是一个矩阵。我需要对这些矩阵中的每一个进行一些计算,并且我想使用该multiprocessing
模块来加快速度。
这些计算的结果必须256x256x256
像原来的那样存储在一个数组中,这样原数组中元素处的矩阵的结果就[i,j,k]
必须放在[i,j,k]
新数组的元素中。
为此,我想制作一个可以以伪方式编写的列表,[array[i,j,k], (i, j, k)]
并将其传递给要“多处理”的函数。假设这matrices
是从原始数组中提取的所有矩阵的列表,并且myfunc
是进行计算的函数,代码看起来有点像这样:
但是,似乎map_async
实际上是finput
首先创建了这个巨大的列表:我的 CPU 并没有做太多事情,但是内存和交换在几秒钟内就被完全消耗掉了,这显然不是我想要的。
有没有办法将这个巨大的列表传递给多处理函数,而无需先显式创建它?或者你知道解决这个问题的另一种方法吗?
非常感谢!:-)
csv - 如何在 python 3.2 中对 csv (dict)reader 对象进行分块?
我尝试使用多处理模块中的 Pool 来加快读取大型 csv 文件的速度。为此,我改编了一个示例(来自 py2k),但似乎 csv.dictreader 对象没有长度。这是否意味着我只能迭代它?有没有办法把它分块?
这些问题似乎相关,但并没有真正回答我的问题: csv.DictReader 中的行数, 如何在 Python 3 中分块列表?
我的代码试图这样做:
python - itertools 中的 izip_longest:迭代器内的索引错误如何工作?
在这个问题中,@lazyr 询问以下izip_longest
迭代器代码是如何工作的:
当我试图理解它是如何工作的时,我偶然发现了一个问题:“如果在作为参数IndexError
发送到的那些迭代器之一中引发怎么办?”。izip_longest
然后我写了一些测试代码:
事实证明,itertools
模块中的功能和izip_longest_from_docs
工作方式不同。
上面代码的输出:
因此,可以清楚地看到,izip_longes
from的代码itertools
确实传播了IndexError
异常(我认为它应该如此),但是izip_longes_from_docs
“吞下了”IndexError
异常,因为它把它作为sentinel
停止迭代的信号。
我的问题是,他们是如何解决模块IndexError
中代码的传播问题的itertools
?
python - 向 itertools.product 添加额外的状态
我已经查看了 itertools.permutations 和组合,但我认为它们不适用于我的问题。
基本上,我希望创建一个具有定义长度(大于元素数量)的给定字符串的所有可能排列的列表。
基本上,我想要三种可能的状态,0、1 或不关心 [0,1,'*']。
我曾希望做类似的事情:
但是,产品的第一个参数似乎不喜欢超过 2 个参数。
如果我尝试扩大排列或组合(即大于组合的数量),我最终会返回一个空数组。
python - 在 python 2.4 中模拟 itertools.product 的 Pythonic 方式
我有一个使用的 python 3 脚本itertools.product
,但我需要能够在仅安装了 python 2.4 的机器上运行它。由于itertools.product
是 python 2.6 中的新功能,我不再可以访问此功能。
如何itertools.product
以 Python 的方式在 Python 2.4 中进行模拟?
python - 在输入迭代器的开头和结尾保留一个占位符的生成器完好无损
我们以一个列表为例:
255
是其中的一个特殊值。这是一个占位符。
我制作了一个生成器,它替换了列表中的一些占位符。它按预期工作。
但我不需要处理开始占位符[255, 255
和结束占位符255, 255, 255]
并原封不动地产生它们。
所以,我试图修改生成器来解决它:
蟒蛇 2.7
转换为列表的中间值只是为了便于理解代码:
因此,如您所见,list(enumerate(window(it,2)))
包含前导非占位符值的索引(0, ((**1**, 1), (4, 1))),
,但它不包含初始迭代器有多少尾随占位符的信息:list(enumerate(window(it,2)))
以该值结束,该值(6, ((15, 3), (**19**, 3)))
仅具有最后一个非占位符的索引占位符值,它不提供剩余多少占位符的信息。
我设法通过依赖it = enumerate(iterable)
哪个产生初始迭代器值的位置来处理领先的占位符,该初始迭代器值在第一个产生的值中持续存在ifilterfalse
。
但是我花了很多时间试图弄清楚如何对尾随占位符做同样的事情。问题是它ifilterfalse
只是吞下了最后一个占位符值,enumerate(iterable)
我看不到访问它们的方法(因为第一个生成的值ifilterfalse
包含 的值的索引,所以领先的占位符是可能的enumerate(iterable)
)。
问题
纠正此代码以处理尾随占位符的最佳方法是什么?
由于目标不是通过任何方式创建代码(我已经使用不同的技术完成了它),我想通过修改代码来解决这个任务,而不是完全重写它。
与其说是真正的任务,不如说是一种训练。
附加信息
window
是这里的代码。
我的代码与@nye17的这个答案几乎相同。但是在这段代码中,作者对初始列表进行了就地修改。我想创建一个生成器,它将产生与该代码中的结果列表相同的值。
此外,我希望我的生成器接受任何可迭代作为参数,而不仅仅是列表(例如,它可以接受从文件中一一读取值的迭代器)。由于只有列表作为参数,任务变得更简单,因为我们可以从末尾扫描列表。
这不是我在生活中必须解决的真正任务。这只是为了训练。
python - 将可迭代列表传递给 itertools 函数
我正在使用 itertools.product 功能。我有一个 2 深的嵌套列表,它是一个可迭代的列表。我想将此传递给产品功能,不知道如何正确格式化。
说清楚,我想要
但是从这样的nested_list输入生成
但相反我得到
python - 在 python 中使用组合对象
我如何遍历 combObj ?
我怎样才能转换
[(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]
为
[[1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4]]