Python 简明教程

Python - Sort Arrays

Python’s array 模块定义了数组类。数组类的对象类似于 Java 或 C/C++ 中存在的数组。与内置 Python 序列不同,数组是 strings 、整数或浮点数对象的同构集合。

数组类没有任何函数/方法来对它的元素进行排序的排列。然而,我们可以运用下列方法之一来实现它 −

  1. Using a sorting algorithm

  2. 使用 List 中的 sort() 方法

  3. 利用内置的 sorted() 函数

我们逐一详细讨论这些方法。

sorting array python

Sort Arrays Using a Sorting Algorithm

我们以经典 bubble sort algorithm 方式实现它以获取排序后的数组。要做到这一点,我们用两个 nested loops ,然后交换元素以按排序顺序重新排列。

Example

使用 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)

它将生成以下 output

array('i', [4, 5, 6, 9, 10, 15, 20])

Sort Arrays Using sort() Method of List

尽管阵列模块没有 sort() method ,但 Python 的内置 List 类有一个 sort 方法。我们将在下一个示例中使用它。

首先,声明一个数组,并利用 tolist() 方法从中获取一个列表对象。然后,使用 sort() 方法获取一个排序后的列表。最后,使用排序后的列表创建另一个数组,它会显示一个排序后的数组。

Example

以下代码展示了如何使用 sort() 方法获取一个排序后的数组。

import array as arr

# creating array
orgnlArray = arr.array('i', [10,5,15,4,6,20,9])
print("Original array:", orgnlArray)
# converting to list
sortedList = orgnlArray.tolist()
# sorting the list
sortedList.sort()

# creating array from sorted list
sortedArray = arr.array('i', sortedList)
print("Array after sorting:",sortedArray)

上述代码将显示以下输出 −

Original array: array('i', [10, 5, 15, 4, 6, 20, 9])
Array after sorting: array('i', [4, 5, 6, 9, 10, 15, 20])

Sort Arrays Using sorted() Method

第三种数组排序方法是使用 sorted() 函数,它是一个 built-in function

sorted() 函数的 syntax 如下 −

sorted(iterable, reverse=False)

该函数返回一个新列表,包含所有元素按升序排序的 iterable 对象。将逆序参数设置为 True,以获取按降序排序的元素。

sorted() 函数可以与任何 iterable 对象一起使用。Python 数组是一个 iterable 对象,因为它是一个索引集合。因此,一个数组可用作 sorted() 函数的参数。

Example

在这个示例中,我们将看到 sorted() 方法在数组排序中的应用。

import array as arr
a = arr.array('i', [4, 5, 6, 9, 10, 15, 20])
sorted(a)
print(a)

它将生成以下 output

array('i', [4, 5, 6, 9, 10, 15, 20])