Python程序:按姓氏排序名字列表

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()函数将列表连接并将其转换为字符串。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程