Python 数组排序
Python的array模块定义了array类。array类的对象类似于Java或C/C++中的数组。与内置的Python序列不同,array是一个同类型的集合,可以是字符串、整数或浮点数对象。
array类没有提供任何可以对其元素进行排序的函数或方法。然而,我们可以通过以下方法之一来实现排序:
- 使用排序算法
-
使用List的sort()方法
-
使用内置的sorted()函数
让我们详细讨论每种方法。
使用排序算法
我们将实现经典的 冒泡排序算法 来获得排序后的数组。为了实现这个算法,我们使用两个嵌套循环,并交换元素以重新排列为排序顺序。
使用Python代码编辑器保存以下代码:
import array as arr
a = arr.array('i', [10,5,15,4,6,20,9])
for i in range(0, len(a)):
for j in range(i+1, len(a)):
if(a[i] > a[j]):
temp = a[i];
a[i] = a[j];
a[j] = temp;
print (a)
它将产生以下 输出 −
array('i', [4, 5, 6, 9, 10, 15, 20])
使用列表的sort()方法
尽管数组没有sort()方法,但Python内置的列表类有sort方法。我们将在下个示例中使用它。
首先,声明一个数组并使用tolist()方法从中获取一个列表对象 –
a = arr.array('i', [10,5,15,4,6,20,9])
b=a.tolist()
我们可以很容易地获得按照以下方式排序的列表:
b.sort()
我们所需要做的就是将这个列表转换回数组对象−
a.fromlist(b)
这是完整的代码。
from array import array as arr
a = arr.array('i', [10,5,15,4,6,20,9])
b=a.tolist()
b.sort()
a = arr.array('i')
a.fromlist(b)
print (a)
它将生成以下 输出 −
array('i', [4, 5, 6, 9, 10, 15, 20])
使用内建的sorted()函数进行排序
对数组进行排序的第三种技术是使用内建的sorted()函数。
sorted()函数的 语法 如下所示:
sorted(iterable, reverse=False)
该函数返回一个包含了可迭代对象中所有项目按升序排列的新列表。将reverse参数设置为True可以获得按降序排列的项目。
sorted()函数可以与任何可迭代对象一起使用。Python数组是可迭代对象,因为它是一个索引集合。因此,数组可以作为sorted()函数的参数。
from array import array as arr
a = arr.array('i', [4, 5, 6, 9, 10, 15, 20])
sorted(a)
print (a)
这将产生以下 输出 −
array('i', [4, 5, 6, 9, 10, 15, 20])