我使用的是 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]
这正是我想要的,但它似乎太简单/容易了,我不确定 "::"
是否算作一个函数。
所以我想知道是否有人对如何手动设计上述功能有任何提示/想法?当您不能使用任何内置函数时,这似乎真的很难,而且我现在已经停滞了很长一段时间。
最佳答案
range
和 len
都是 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/