l = [4,5,7,9,10,12]
def rotation(l,n):
return l[n:] + l[:n]
print rotation(l,3)
让“ l”成为上面提到的列表,使用上面的代码,我可以将前半部分[4,5,7]与另一半部分[9,10,12]旋转,得到所需的输出[9] ,10,12,4,4,5,7]。但是,当元素数量奇数时,我想做的却无法弄清楚。假设l = [4,5,7,8,9,10,12]我希望中间的奇数(在这种情况下为[8])保留在中间,并且上半部分与最后一半,在这种情况下获得输出[9,10,12,8,4,5,7]
谢谢。
答案 0 :(得分:1)
如果我明白这一点,那就可以了。
但是我认为不需要将第二个参数传递给方法(除非您正在寻找不同的东西)。
def rotation(l):
size = len(l)
n = size // 2
res = l[-n:] + l[:n] if size % 2 == 0 else l[-n:] + [l[n]] + l[:n]
return res
print(rotation([4,5,7,8,9,10])) #=> [8, 9, 10, 4, 5, 7]
print(rotation([4,5,7,8,9,10,12])) #=> [9, 10, 12, 8, 4, 5, 7]
答案 1 :(得分:1)
def rotation(l,n):
if len(l) % 2 == 0:
return l[n:] + l[:n]
else:
return l[-n:] + [l[n]] + l[:n]