如何实现这个python gen

2024-10-02 18:18:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在python中创建一个生成器,它返回以下内容: 在

itemList = []
for i in myGenerator(12):
    itemList.append(i)
print itemList
>>> [0 0.334, 1, 2, 3, 4, 5, 6, 7, 8, 8.667, 9]

这就是我目前所拥有的: 在

^{pr2}$

但似乎不干净。。。有别的办法吗?在


Tags: inforprintappend办法pr2itemlistmygenerator
2条回答

我会分段构建范围:

from itertools import chain
def myGenerator(index):
    return chain([0, 1 / 3.0], xrange(1, index - 3), [index - 3 - 1 / 3.0, index - 3])

list(myGenerator(12))
[0, 0.33333333333333331, 1, 2, 3, 4, 5, 6, 7, 8, 8.6666666666666661, 9]

如果你想保持接近你最初的想法,但没有“如果…elif…else”结构:

def myGenerator(index) :
    yield 0
    yield 1/3.0
    for i in xrange(1, index-3):
        yield i
    yield index - 3 - 1/3.0
    yield index - 3

相关问题 更多 >