小编XXX*_*XXX的帖子

为什么itertools.count()与zip一起使用时会消耗额外的元素?

我试图通过使用itertools.count()压缩zip来将functools.partial与itertools.count一起使用:

g = functools.partial(zip, itertools.count())
Run Code Online (Sandbox Code Playgroud)

当使用诸如“ abc”,“ ABC”之类的输入调用g时,我注意到itertools.count()神秘地“跳跃”。

我以为我应该得到与使用itertools.count()直接使用zip相同的结果?喜欢:

>>> x=itertools.count();
>>> list(zip("abc",x))
[('a', 0), ('b', 1), ('c', 2)]
>>> list(zip("ABC",x))
[('A', 3), ('B', 4), ('C', 5)]
Run Code Online (Sandbox Code Playgroud)

但是,相反,我得到以下内容-注意g的第二次调用的起始索引是4而不是3:

>>> g = functools.partial(zip, itertools.count())
>>> list(g("abc"))
[(0, 'a'), (1, 'b'), (2, 'c')]
>>> list(g("ABC"))
[(4, 'A'), (5, 'B'), (6, 'C')]
Run Code Online (Sandbox Code Playgroud)

python functional-programming

3
推荐指数
2
解决办法
58
查看次数

标签 统计

functional-programming ×1

python ×1