在不使用内置函数的情况下反转列表

NAs*_*den 9 python list python-3.x

我正在使用Python 3.5.

作为问题的一部分,我正在尝试设计一个将列表作为输入并将其还原的函数.所以,如果x = [a, b, c]该功能会x = [c, b, a].

问题是,我不允许使用任何内置函数,它让我陷入困境.我最初的想法是函数内的以下循环:

for revert in range(1, len(x) + 1):
    y.append(x[-revert])
Run Code Online (Sandbox Code Playgroud)

它有效.但问题是我正在使用len(x),我认为这是一个内置函数,对吗?

所以我四处搜索并制作了以下非常简单的代码:

y = x[::-1]
Run Code Online (Sandbox Code Playgroud)

这正是我想要的,但它看起来几乎太简单/容易,我不确定是否"::"算作一个功能.

所以我想知道是否有人有任何提示/想法如何手动设计所述功能?当你不能使用任何内置函数时它看起来真的很难,现在我已经停留了很长时间.

Jim*_*ard 5

range并且len都是内置函数.由于list 方法被接受,你可以这样做insert.它实际上很慢*但是它可以在不使用任何内置函数的情况下完成小型列表的工作:

def rev(l):
    r = []
    for i in l:
        r.insert(0, i)
    return r
Run Code Online (Sandbox Code Playgroud)

通过连续插入第零个位置,您最终得到了输入列表的反转版本:

>>> print(rev([1, 2, 3, 4]))
[4, 3, 2, 1]
Run Code Online (Sandbox Code Playgroud)

这样做:

def rev(l): 
    return l[::-1] 
Run Code Online (Sandbox Code Playgroud)

也可以被认为是一种解决方案.::-1(::具有不同的结果)不是一个函数(它是一个切片),并且[]再次是一个列表方法.此外,对比insert,它更快,更可读; 只要确保你能够理解并解释它.在这个SO答案中可以找到关于它如何工作的一个很好的解释.

*Reeaaalllyyyy慢,看到juanpa.arrivillaga的答案冷静的情节和append具有pop看一看在原位reverse上列出在约阿夫Glazner的答案来完成.