gpt4 book ai didi

python - 需要备用 Python 列表反向解决方案

转载 作者:行者123 更新时间:2023-11-28 19:37:06 24 4
gpt4 key购买 nike

我今天参加了工作面试。在此期间,我被要求写下一个可以反转列表的算法。首先,我使用 reversed() 方法提供了答案:

    x = [1,2,3,4,5]
y = reversed(x)
for i in y:
print i

面试的资深开发人员问我是否知道另一种方法,我根据它写下了另一种已知的切片方法:

   x = [1,2,3,4,5]
y = x[::-1]

不幸的是,他对这个解决方案也不满意,并让我考虑另一种解决方案。几分钟后我说我想不出更好的。他说这对于他们的标准来说还不够好。

我完全同意他的意见,并且在我的代码上进行更多练习也没有问题。我的问题是,如果有的话,什么是我不知道的更好的解决方案。是否还有其他更“程序员”的方式……唯一想到的是递归,但是我是在面试结束后才想到的。谢谢。

最佳答案

你的两个答案在python方面都很好,所以面试官一定一直在要求你实现自己的方法:

使用递归:

def recur_rev(l):
return recur_rev(l[1:]) + l[:1] if l else l

或者从 l -1 的长度开始并反向进行的列表 comp 和范围:

l = list(range(100))

print([l[ind] for ind in range(len(l)-1,-1,-1)])

使用 itertools.count:

from itertools import count
cn = count(len(l) -1, -1)

print([l[next(cn)] for ele in l])

为了提高效率,使用生成器表达式:

rev  = (l[next(cn)] for ele in l)

for ele in rev:
print(ele)

或者使用 map :

print(list(map(l.__getitem__,range(len(l)-1,-1,-1)))) # list needed for python3

[99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

如果没有在 map 上调用列表,我们将得到一个可以在 python3 中迭代的 map 对象,您可以使用 itertools.imap在python2中实现类似的结果

关于python - 需要备用 Python 列表反向解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28369740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com