Python中按字母顺序对列表排序

在本 Python 教程中,您将了解Python使用不同方法按字母顺序对列表进行排序。

在员工管理应用程序中,我必须实现按字母顺序对用户进行排序的功能,因此我在列表上使用了sort()方法。

因此,在本教程中,我解释了如何按字母顺序对包含字符串的列表进行排序,以及另外两种可用于按字母顺序对列表进行排序的方法。

Python 按字母顺序对列表进行排序
Python 有多种方法,例如sorted()、sort()和自定义函数,用于按字母顺序对列表进行排序。

1、如何在Python中使用sorted()方法按字母顺序对列表进行排序
Python 中的sorted()方法允许您按升序和降序对可迭代对象进行排序。可迭代对象可以是元组、列表字典等。

但在这里,您将使用可迭代对象(如列表)按字母顺序对列表项进行排序。

语法如下。

  • sort(iterable_object, reverse)
  • sort():对给定的可迭代对象进行排序的函数。
  • iterable_object:它是要排序的项目的集合,例如列表。相反:它是一个布尔值,可以是False或True。如果指定为 false,则按升序对项目进行排序;如果指定 true,则按降序对项目进行排序。但默认情况下,它设置为 False。

例如,假设您有一个用户列表,如下所示。

users = ["Roy", "Vincent", "Bobby", "Philip", "Eugene"]


正如您所看到的,用户名没有任何特定的顺序,因此您需要按字母顺序对它们进行排序。为此,您可以使用排序()函数,如下所示。

sorted_users = sorted(users)

print(sorted_users)

从输出中,您可以看到用户名按升序排序,这意味着第一个用户名以字母 B 开头,第二个用户名以字母 E 开头,依此类推。

你必须知道sorted()函数对原始列表进行排序而不改变它;相反,它创建原始列表的副本,然后对该列表进行排序。

2、Python 使用 sort() 方法按字母顺序对字符串列表进行排序
您刚刚学习了如何使用Sorted()方法按字母顺序对列表进行排序,但是 Python 还有一种名为sort() 的方法,您可以在列表上调用该方法以按字母顺序对列表中的项目进行排序。

例如,获取您在上一节中创建的相同用户列表,并对其调用 sort() 方法。

users = ["Roy", "Vincent", "Bobby", "Philip", "Eugene"]
users.sort()
print(users)

从输出中,您可以看到列表“users”按字母顺序排序为[“Bobby”、“Eugene”、“Philip”、“Roy”、“Vincent”]。但在这里我想告诉你,sort()函数对原始列表进行排序,它不会像sorted()函数那样创建列表的副本。

但是, sort()方法存在一个问题,如果列表同时包含大写和小写字符串(用户名),则该方法无法按字母顺序对列表进行排序。

例如,看看下面的代码。

users = ["roy", "Vincent", "Bobby", "philip", "Eugene"]

users.sort()

print(users)

从输出中可以看到,名称以大写字母开头的用户的优先级高于名称以小写字母开头的用户。

然而,在这里,列表应该按字母顺序排序,这意味着 Vincent 应该是姓氏,但它是第三个名字。

简而言之,通常,当您使用 sort() 方法按字母顺序对单词或短语进行排序时,任何大写(大写)字母都会出现在小写字母之前。发生这种情况的原因在于计算机使用的 ASCII 系统中字符代码的排序方式。

为此,有一个解决方案:解决方案是将所有名称转换为小写,然后按字母顺序对它们进行排序,但是如何应用该函数,因为 sort() 方法还接受一个名为key的参数。

这个关键参数值必须是一个函数,因此我们将使用 lower() 函数来降低列表中的名称。看下面的代码。

users = ["roy", "Vincent", "Bobby", "philip", "Eugene"]

users.sort(key=str.lower)

print(users)

从输出中,您现在可以看到用户的姓名按字母顺序排序,无论大小写。

因此,在这部分代码中,users.sort(key=str.lower)按字母顺序对用户名进行排序,但它使用key=str.lower将函数 lower() 应用于列表的每个项目,以确保该用户名已按应有的顺序正确排序。

这是如何使用 Python 的 sort() 函数按字母顺序对列表进行排序。

3、如何在Python中不使用Sort函数按字母顺序对列表进行排序
到目前为止,您已经使用了像sorted()和sort()这样的函数来按字母顺序对列表进行排序,但是您也可以不使用排序函数来按字母顺序对列表进行排序。为此,您需要创建一个自定义函数。

创建自定义排序函数意味着编写按字母顺序排列列表的分步说明,而无需使用 Python 中存在的任何内置方法。

该函数使用简单的冒泡排序算法,该算法在 Python 中重复遍历列表,比较相邻元素,如果顺序错误则交换它们。重复遍历 Python 列表,直到列表排序完毕。

例如,看看下面的代码。

def custom_sort(list_to_sort):
    n = len(list_to_sort)
    for i in range(n):
        for j in range(0, n-i-1):
            if list_to_sort[j] > list_to_sort[j+1]:
                list_to_sort[j], list_to_sort[j+1] = list_to_sort[j+1], list_to_sort[j]

us_rivers = ['Mississippi River', 'Missouri River', 'Yukon River', 'Rio Grande', 'Colorado River']
custom_sort(us_rivers)
print('Sorted names of the river alphabetically:\n', us_rivers)

从输出中,您可以看到custom_sort()函数获取列表并通过应用冒泡排序概念按字母顺序对其进行排序。

通过上面的示例,我希望您了解如何按字母顺序对列表进行排序。

结论
在本 Python 教程中,您了解了使用 Sorted() 和 sort() 以及创建自定义函数按字母顺序排列 Python 列表。