python - 不使用内置函数反转列表

标签 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])

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

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

y = x[::-1]

这正是我想要的,但它似乎太简单/容易了,我不确定 "::" 是否算作一个函数。

所以我想知道是否有人对如何手动设计上述功能有任何提示/想法?当您不能使用任何内置函数时,这似乎真的很难,而且我现在已经停滞了很长一段时间。

最佳答案

rangelen 都是 built-in functions .由于 list methods 已被接受,您可以使用 insert 来完成此操作.它真的很慢* 但它可以在不使用任何内置插件的情况下完成列表的工作:

def rev(l):
    r = []
    for i in l:
        r.insert(0, i)
    return r

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

>>> print(rev([1, 2, 3, 4]))
[4, 3, 2, 1]

正在做:

def rev(l): 
    return l[::-1] 

也可以被认为是一种解决方案。 ::-1(:: 有不同的结果)不是一个函数(它是一个切片)而 [] 又是,列表方法。此外,与 insert 相比,它更快且可读性更强;只要确保你能够理解和解释它。可以在 in this S.O answer. 中找到关于它如何工作的很好的解释。

*Reeaaalllyyyy 很慢,请参阅 juanpa.arrivillaga 对精彩情节的回答,并使用 pop append 并查看就地 reverse 在 Yoav Glazner 的回答中完成的列表上。

关于python - 不使用内置函数反转列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39502915/

相关文章:

Python:在不是整数的字符串上使用 int()

python - 为什么这个参数在sklearn的Pipeline中无效?

list - 如何使用递归删除 Racket 列表中的第一个和最后一个元素

python - 在用户按下回车键之前获取 STDIN

python - Docker 从守护进程获取事件时出错 : EOF

python - pygame音频播放速度

list - l_ply : how to pass the list's name attribute into the function?

python - 如何输出列表中所有字符串的第一个字符?

python - ThreadPoolExecutor 内部结构

python - 如何在 Python 中使用日历类?