移动列表中的元素(Python)

时间:2016-03-28 21:13:01

标签: python list

我正在尝试运行一个代码,将列表的值向右移动三个位置。例如,我有一个列表[1,2,3,-3,15,6,71,42],我想输出[-3,15,6,71,42,1,2,3] ,但该程序的当前输出是[-3,15,6,71,42,8,8,8]。我找不到错误,但教授要我改变仅一行代码来修复错误。所以错误一定不能太难找到。除了我似乎无法找到它:D

请帮忙!

def foo1(values): 
   return values[0] 

def foo2(values):        
   for i in range(1,len(values)):
      values[i-1] = values[i]
      
def foo3(values,c):
      values[len(values)-c] = len(values)
   
def main(): 
   values = [1,2,3,-3,15,6,71,42] 
   k = 3
   for r in range(k): 
      a = foo1(values)       
      foo2(values)
      foo3(values,a)
      
      
       
      
   print("Here is the shifted list to the left for " + str(k) + " time:" )
   print(values)

   
main()

3 个答案:

答案 0 :(得分:4)

更改此行:

  values[len(values) - c] = len(values)

对此:

  values[len(values) - 1] = c

现在您正在使用项目的(c)作为索引,而不是"追加"它在每次迭代中移动到列表中。

答案 1 :(得分:3)

您的解决方案过于复杂 - 无需具备三种不同的功能。假设您有一个名为data的列表,您可以执行以下操作:

for i in range(number_of_shifts):
    data.append(data.pop(0))

答案 2 :(得分:0)

其他解决方案:

data = data[k:] + data[:k]