我正在尝试创建一个函数,该函数针对列表的每个成员返回该成员的值及其两侧的值数。唯一的窍门是,当它位于列表的开头或结尾时,它必须“环绕”
例如:
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)
我没有对列表进行切片以使逻辑更清晰。
我希望这能奏效
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句