【发布时间】:2016-05-25 19:42:04
【问题描述】:
我的目标是创建一个函数,该函数将 2 个排序整数列表作为参数 并创建一个排序的合并列表。唯一的问题是我不允许 修改 2 个原始列表(并且不能重复修改任何一个)。仅允许的内置函数是 range()、len()、index()、append()。到目前为止,我很难过。
这是我所拥有的:
def merge_lists( list1, list2 ):
sortedList = []
pointer1 = 0
pointer2 = 0
while pointer1 < len( list1 ) and pointer2 < len( list2 ):
if list1[ pointer1 ] < list2[ pointer2 ]:
sortedList.append( list1[ pointer1 ] )
pointer1 += 1
elif list2[ pointer2 ] < list1[ pointer1 ]:
sortedList.append( list2[ pointer2 ] )
pointer2 += 1
elif list1[ pointer1 ] == list2[ pointer2 ]:
sortedList.append( list1[ pointer1 ] )
sortedList.append( list2[ pointer2 ] )
pointer1 += 1
pointer2 += 1
if pointer1 == 0:
for number in list1:
sortedList.append( number )
if pointer2 == 0:
for number in list2:
sortedList.append( number )
else:
amountNumbersLeft1 = len( list1 ) - ( pointer1 - 1 )
amountNumbersLeft2 = len( list2 ) - ( pointer2 - 1 )
if amountNumbersLeft1 != 0:
for o in range( 1, ( amountNumbersLeft1 ) ):
sortedList.append( list1[ o ] )
if amountNumbersLeft2 != 0:
for i in range( 1, ( amountNumbersLeft2 ) ):
sortedList.append( list2[ i ] )
return sortedList
我以 ( [ 1, 2, 3 ], [ 4, 5, 6 ] ) 作为参数的测试用例有效,返回了一个列表 [ 1, 2, 3, 4, 5, 6 ]。但是,我使用 ( [ 2, 13, 19 ], [ 3, 6, 9, 22 ] ) 的测试用例返回了 [ 2, 3, 6, 9, 13, 19, 6 ]。
我觉得有一个更简单的排序解决方案。请帮忙。谢谢。
【问题讨论】:
-
请不要发布代码屏幕截图的链接,而是将其包含在您的帖子中。
-
最好将代码提供为文本(可以在帖子中格式化为代码),以便我们进行更改和测试。这里没有人对手动将代码输入文件感兴趣!
-
好的,我会这样做的!
-
如果您直接遍历输入列表项而不是使用索引间接执行此代码,则此代码会简单得多。
标签: python list python-2.7 function sorting