(在我开始之前,让我们先假设这是一个面试问题,我的目的是避免仅仅打电话。)
我有一个可以工作的Python代码:
def merge_sorted_lists(left, right):
leftlen = len(left)
rightlen = len(right)
leftidx = 0
rightidx = 0
newlist = []
while leftidx < leftlen or rightidx < rightlen:
if rightidx == rightlen or left[leftidx] <= right[rightidx]:
newlist.append(left[leftidx])
leftidx += 1
elif leftidx == leftlen or right[rightidx] < left[leftidx]:
newlist.append(right[rightidx])
rightidx += 1
return newlist
我是一个长时间的C++程序员,最近学习了足够多的Python,知道这个“气味”非常丰富,使用了IDX。当迭代器的发展需要这种微调控制时,有没有更优雅的方法来遍历两个列表?你知道吗
呃,首先,我想先用发电机来代替。我使用yield而不是构建一个列表,因为a)生成器可以是无限的,b)嘿,一旦你开始使用生成器,不妨一直使用生成器。你知道吗
我可能会为此创建一个合并生成器:
不过,这只是一个骨架,你可能会把它做得更好,例如,通过分离环等
我知道您希望避免使用“排序”是因为您需要一个更好地描述算法的解决方案,但我真诚地认为pythonic解决方案需要它。你知道吗
对于公开合理算法而不跟踪索引的非pythonic解决方案,可以尝试以下递归解决方案:
这一个比我的另一个解决方案长很多行,长输入可能会淹没堆栈。你知道吗
相关问题 更多 >
编程相关推荐