python对两个数组进行合并排列

如何使用python对两个数组(列表)进行合并(合并为一个数组),并按照从小到大的顺序进行排列?

我们先随意写两个数组:arr1和arr2。

第一种方法:先使用extend函数将arr1和arr2合并为一个数组,再使用sort函数将新arr1按照从小到大的顺序进行排列。

# 第一种方式
arr1 = [1, 4, 2, 3, 7, 6, 9]
arr2 = [3, 6, 5, 7, 9, 8]
print(arr1)
print(arr2)
arr1.extend(arr2)  #使用extend函数进行拼接
arr1.sort(reverse=False)
print(arr1)

运行结果如下: 

[1, 4, 2, 3, 7, 6, 9]
[3, 6, 5, 7, 9, 8]
[1, 2, 3, 3, 4, 5, 6, 6, 7, 7, 8, 9, 9]

进程已结束,退出代码0

为什么不使用append函数运行?????

我们可以尝试运行一下。

arr1 = [1, 4, 2, 3, 7, 6, 9]
arr2 = [3, 6, 5, 7, 9, 8]
print(arr1)
print(arr2)
arr1.append(arr2)
print(arr1)

最后得到的结果是:

[1, 4, 2, 3, 7, 6, 9]
[3, 6, 5, 7, 9, 8]
[1, 4, 2, 3, 7, 6, 9, [3, 6, 5, 7, 9, 8]]

进程已结束,退出代码0

 

 由上可知,它并不能将两个数组拼接,而是合成了一个二维数组

 第二种方法:使用模拟指针合并为一个数组。我们可以通过一个数组(列表)中每个元素的下标来找出对应的值,那么储存这个元素位置的下标值的变量可以视作一个指针,但并不是真正意义上的指针。这里写出来只是为了能提供一种新的思路。

先sort将两个数组排序,再利用for循环进行拼接。

arr1 = [1, 4, 2, 3, 7, 6, 9]
arr2 = [3, 6, 5, 7, 9, 8]
arr1.sort(reverse=False) # 若为True,则是从大到小排列
arr2.sort(reverse=False)
ind = 0
ans = arr1.copy()
for i in range(0, len(arr2)):
    while ind < len(arr1):       # ind的范围不能超过数组元素下标的最大值
        if arr2[i] <= arr1[ind]:
            ans.insert(ind + i, arr2[i])    # 向第一个数组中插入第二个数组中的数
            break
        else:
            ind += 1       # 如果ind指向的数比i指向的数小,则ind向后一位
    else:
        ans = ans + arr2[i:]
print(ans)

运行结果如下:  

[1, 2, 3, 3, 4, 5, 6, 6, 7, 7, 8, 9, 9]

进程已结束,退出代码0

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2023年3月5日 下午1:29
下一篇 2023年3月5日 下午1:30

相关推荐