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