我正在尝试创建一个函数,该函数针对列表的每个成员返回该成员的值及其两侧的值数。唯一的技巧是,它必须在列表的开头或结尾时“环绕”
例如:
a = [0,1,2,3,4,5,6,7,8,9]
myfunc(a,2) # 2 indicates 2 either side
[8,9,0,1,2]
[9,0,1,2,3]
[0,1,2,3,4]
...
...
[6,7,8,9,0]
[7,8,9,0,1]
我可以找出从索引2到7的处理方法:
def myfunc(vals, rnge):
for i in range(0+rnge, len(vals)-rnge):
print vals[i-rnge:i+rnge+1]
但是我想不出在需要包装时如何处理。
最佳答案
这是解决方案:
def defunc(vals, start, rnge):
n = len(vals)
new = []
for i in xrange((start - rnge), (start + rnge)+ 1):
new.append(vals[i%n])
return new
def myfunc(vals, rnge):
n = len(vals)
for i in range(n):
print defunc(vals,i,rnge)
我没有对列表进行切片以使逻辑更清晰。
我希望这能奏效
关于python - 如何对索引使用模块化算法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31366737/