python程序来扭转列表不可编辑的问题

python程序来扭转列表不可编辑的问题,python,list,Python,List,列表旋转包括获取第一个元素并将其移动到末尾。例如,如果我们旋转列表[1,2,3,4,5],我们得到[2,3,4,5,1]。如果我们再次旋转它,我们得到[3,4,5,1,2] 下面是一些例子来说明函数应该如何工作 rotatelist([1,2,3,4,5],1) [2, 3, 4, 5, 1] rotatelist([1,2,3,4,5],3) [4, 5, 1, 2, 3] rotatelist([1,2,3,4,5],12) [3, 4, 5, 1, 2] 我试图成功地对其进行编码,但

列表旋转包括获取第一个元素并将其移动到末尾。例如,如果我们旋转列表[1,2,3,4,5],我们得到[2,3,4,5,1]。如果我们再次旋转它,我们得到[3,4,5,1,2]

下面是一些例子来说明函数应该如何工作

rotatelist([1,2,3,4,5],1)
[2, 3, 4, 5, 1]

rotatelist([1,2,3,4,5],3)
[4, 5, 1, 2, 3]

rotatelist([1,2,3,4,5],12)
[3, 4, 5, 1, 2]
我试图成功地对其进行编码,但遇到了一个问题,当我连接列表时,我得到了一个错误:int iterable error,但当我使用
append
时,程序成功执行,请解释一下这个概念,这是我的python代码:

def rotatelist(l,k):
    if k<0:
        return l
    new_list=l[::]    
    while k>0:
        temp=new_list[0]
        new_list=new_list[1:]
        new_list=new_list+list(temp)
        k-=1
   return new_list
def旋转列表(l,k):
如果k0:
temp=新列表[0]
新建列表=新建列表[1:]
新建列表=新建列表+列表(临时)
k-=1
返回新列表
还是你的情况

def rotatelist(l,k):
    if k<0:
        print(l)
    new_list=l[::]    
    while k>0:
        temp=new_list[0]
        new_list=new_list[1:]
        new_list=new_list+[temp]
        k-=1
    print(new_list)

rotatelist([1,2,3,4,5],3)

您可以使用
deque
及其
rotate
方法执行此操作

from collections import deque


def rotatelist(l, k):
    dq = deque(l)
    dq.rotate(-k)
    return list(dq)
印刷品:

[3, 4, 5, 1, 2]
此代码:

def rotatelist(l,k):
    if k<0:
        return l
    new_list=l[::]    
    while k>0:
        temp=new_list[0]
        new_list=new_list[1:]
        new_list.append(temp)
        k-=1
    return new_list

出现此错误是因为您试图创建一个包含整数的列表:

temp = 1
print(list(temp))
输出:

TypeError: 'int' object is not iterable 
下面的示例工作正常,因为您正在列表中放置一个整数:

temp = 1
print([temp])
输出:

[1]

list
将iterable作为参数,并向其传递一个
int
。您应该编写
[temp]
,而不是
list(temp)
,以获取包含此唯一值的列表。为什么不使用list(temp)list函数还将其中的项转换为list@AnkushRasgon您的
deque
示例将不会产生预期结果-必须在
.rotate()中使用负数
@PranavSharma[]只需将temp包装在一个列表中。list(temp)将其转换为列表。为什么不使用list(temp)list函数还将其中的项目转换为list,因为您正在尝试使用整数创建列表。我在答案中又添加了两个示例。好的,我在列表()中得到了它。我们只能处理可iterable对象,如字符串、元组、dict等,因为int是不可iterable的,我们不能在列表()中使用,但我们可以使用[]或使用append来创建列表,感谢您的合作
rotatelist([1,2,3,4,5],1)
[2, 3, 4, 5, 1]                                                                                                                                               

rotatelist([1,2,3,4,5],3)
[4, 5, 1, 2, 3]                                                                                                                                               

rotatelist([1,2,3,4,5],12)
[3, 4, 5, 1, 2]   
temp = 1
print(list(temp))
TypeError: 'int' object is not iterable 
temp = 1
print([temp])
[1]