Python程序:按姓氏排序名字列表
在本文中,我们将学习一个Python程序,以姓氏为关键字对名字列表进行排序。
使用方法
- 使用lambda和sorted()函数
-
使用lambda和sort()函数
示例
假设我们采用了一个 输入列表 ,其中包含字符串元素。我们现在将按字母顺序升序排序列表元素的最后名称,使用以上方法。
输入
输入列表:['sachin tendulkar','suresh raina','hardik pandya']
输出
按姓氏排序的输入列表:
['hardik pandya','suresh raina','sachin tendulkar']
输入列表元素的最后名称是 tendulkar、raina、pandya,即 t,r,p (第一个字符顺序)。我们按字母顺序升序排序它们,这意味着 p,r,t (p<r<t)。
方法1:使用lambda和sorted()函数
Lambda函数
Lambda函数,通常称为“匿名函数”,与普通的Python函数相同,只是可以 没有名称 定义。使用 def 关键字定义正常函数,而使用 lambda 关键字定义匿名函数。然而,它们限于一行表达式。与常规函数一样,它们可以接受多个参数。
语法
lambda arguments: expression
sorted()函数
sorted()函数返回给定可迭代对象的排序列表。
您可以选择升序或降序。数字按数字顺序排序,字符串按字母顺序排列。
语法
sorted(iterable,key=key,reverse=reverse)
参数
- 可迭代的 − 它是类似元组、列表、字符串等的序列。
-
键 − 一个将执行以确定序列的顺序的函数。默认值为None。
-
reverse − 一个布尔表达式。True表示升序,False表示降序。默认值为False。
算法(步骤)
以下是要执行所需任务的算法/步骤 -。
- 创建一个函数 sortBySurnames() ,它通过接受字符串列表的输入列表按姓氏进行排序。
-
创建一个空列表来存储名称列表。
-
使用 for循环 遍历输入列表。
-
使用 split()函数 (将字符串分割成列表。我们可以定义分隔符;默认分隔符是任何空格)将当前单词拆分为单词列表。
-
使用 append()函数 (将元素添加到列表末尾)将其附加到上面的空列表。
-
再次修改输入列表为空,以存储结果。
-
在将姓氏作为关键字排序新列表的排序中遍历。
-
使用 join()函数 将其转换为字符串,并使用append()函数将其附加到输入列表中。
-
按姓氏返回结果排序列表。
-
创建一个变量来存储 输入列表 中的字符串,并打印给定列表。
-
通过将输入列表作为参数调用上述定义的 sortBySurnames() 函数。
例子
以下程序使用lambda函数和sorted()方法返回输入列表的按姓氏排序的名字列表 –
# 创建一个函数,通过接受字符串列表作为参数来按姓氏排序列表
def sortBySurnames(inputList):
# 存储名字的列表
newList = []
# 遍历输入列表
for i in inputList:
# 将当前单词拆分成单词列表并添加到上面创建的空列表中
newList.append(i.split())
# 再次清空输入列表
inputList = []
# 通过对新列表进行排序并使用第二个单词(姓氏)作为关键字来遍历
for i in sorted(newList, key=lambda k: k[-1]):
# 使用join()函数将其转换为字符串并将其附加到输入列表中
inputList.append(' '.join(i))
# 按姓氏返回排序后的列表
return inputList
# 名字的输入列表
inputList = ['萨钦·滕度卡', '苏雷什·雷纳', '哈迪克·潘迪亚']
# 打印输入列表
print('输入列表:', inputList)
# 调用sortBySurnames()函数并传入输入列表作为参数
print('按姓氏排序后的输入列表:\n', sortBySurnames(inputList))
输出结果
执行上述程序后,将生成以下输出 –
输入列表:['萨钦·滕度卡', '苏雷什·雷纳', '哈迪克·潘迪亚']
按姓氏排序后的输入列表:
['哈迪克·潘迪亚', '苏雷什·雷纳', '萨钦·滕度卡']
方法2:使用lambda和sort()函数
sort()方法
sort()方法将原始列表就地排序。这表示该方法更改了列表元素的顺序。
默认情况下,sort()方法使用小于运算符(<)来排序列表条目,即按升序排序。换句话说,它将较小的元素优先于较大的元素。
要将元素从最高到最低排序(即按降序排序),请在sort()方法中使用reverse=True参数。
list.sort(reverse=True)
例子
以下程序使用lambda函数和sort()函数返回输入列表的按姓氏排序的名字列表 –
# 创建一个函数,通过接受列表作为参数按姓氏排序输入列表
def sortBySurnames(inputList):
# 拆分并排序输入列表,并将姓氏作为关键字
inputList.sort(key=lambda k: k.split()[-1])
# 按姓氏返回排序后的列表
return inputList
# 名字的输入列表
inputList = ['萨钦·滕度卡', '苏雷什·雷纳', '哈迪克·潘迪亚']
# 打印输入列表
print('输入列表:', inputList)
# 通过将输入列表作为参数传递来调用sortBySurnames()函数
print('按姓氏排序后的输入列表:\n', sortBySurnames(inputList))
输出结果
执行上述程序后,将生成以下输出 –
输入列表:['萨钦·滕度卡', '苏雷什·雷纳', '哈迪克·潘迪亚']
按姓氏排序后的输入列表:
['哈迪克·潘迪亚', '苏雷什·雷纳', '萨钦·滕度卡']
结论
本文向我们介绍了按姓氏排序名称列表的两种不同方法。我们学会了如何使用sorted()和sort()函数中的关键字参数根据第n个单词或字符进行排序。此外,我们还学会了如何使用join()函数将列表连接并将其转换为字符串。