【问题标题】:Creating a reverse order list using while loop - unexpected results使用 while 循环创建逆序列表 - 意外结果
【发布时间】:2014-03-25 19:22:47
【问题描述】:

我是入门级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]

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

【问题讨论】:

  • 你能修复你的缩进吗?

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


【解决方案1】:

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

xlist = mylist

你需要复制它。

xlist = mylist[:]

顺便说一句,使用for 循环,您不需要手动增加a

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

【讨论】:

    【解决方案2】:
    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) ]
    

    【讨论】:

      猜你喜欢
      • 2014-06-20
      • 2018-01-10
      • 2020-01-18
      • 2021-05-25
      • 2011-09-08
      • 2020-07-02
      • 1970-01-01
      • 2013-04-03
      • 1970-01-01
      相关资源
      最近更新 更多