如何生成交替范围?

Bjö*_*lex 5 python

我需要在给定半径的给定索引周围的列表中搜索项目.目前我使用此功能为搜索生成交替偏移:

def generateSearchIndizes(radius):
    for i in range(1, radius + 1):
        yield i
        yield -i
Run Code Online (Sandbox Code Playgroud)

执行搜索的代码如下所示:

for i in generateSearchIndizes():
    if pred(myList[baseIndex + i]):
        result = myList[baseIndex + i]
        break # terminate search when first item is found
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否有更优雅的方式来生成搜索indizes,可能没有定义特殊功能?

Mar*_*ers 4

有没有更优雅的方法来生成搜索索引

我认为没有更优雅的方式。你的代码非常简单明了。

也许没有定义特殊函数?

是的,这绝对是可能的。

>>> [b for a in ((x,-x) for x in range(1, 10 + 1)) for b in a]
[1, -1, 2, -2, 3, -3, 4, -4, 5, -5, 6, -6, 7, -7, 8, -8, 9, -9, 10, -10]
Run Code Online (Sandbox Code Playgroud)

  • 好吧,我会坚持使用单独的函数,它更具可读性。 (2认同)