使用while循环创建反向订单列表 - 意外结果

时间:2014-02-24 08:32:16

标签: python list python-3.x while-loop reverse

我是一个介绍级python类的学生,我的任务是使用while循环定义“reverse(mylist)”

这是我到目前为止所做的:

def reverse(mylist):
    a=0
    b=len(mylist)
    xlist=mylist
    while(a!=b):
        mylist[a]=xlist[(-a)-1]
        a+=1
    return mylist

假设输入列表是[1,2,3,4,5,6],使用我的反向函数我将获得输出[6,5,4,4,5,6] ...... [1,2,3,4,5]将成为[5,4,3,4,5]

我不确定我在这里做错了什么。

2 个答案:

答案 0 :(得分:2)

以下语句使xlistmylist引用相同的列表对象:

xlist = mylist

您需要复制它。

xlist = mylist[:]

BTW,使用for循环,您无需手动增加a

for a in range(len(mylist)):
    ....

答案 1 :(得分:0)

def reverse(mylist):
  a=0
  b=len(mylist)
  xlist=[]
  while(a!=b):
    mylist[a:a]=xlist[(-a)-1]
    a+=1
  return mylist

列表通过引用而不是值传输。 你需要创建新的列表。 “xlist = mylist”只创建一个引用。 ps “for in”在python中更常用。

for i in range(2, -1, -1):
  xlist.append(mylist[i])

or:

xlist = [mylist[i], for i in range(2, -1, -1) ]
相关问题