📜  Python|包含字母数字值的排序列表

📅  最后修改于: 2022-05-13 01:55:04.404000             🧑  作者: Mango

Python|包含字母数字值的排序列表

给定一个包含两个字母数字值的列表,编写一个Python程序对给定列表进行排序,使字母值始终位于数字值之后。

例子:

Input : ['k', 5, 'e', 3, 'g', 7, 0, 't']
Output : [0, 3, 5, 7, 'e', 'g', 'k', 't']

Input : [1, 'c', 3, 2, 'a', 'b']
Output : [1, 2, 3, 'a', 'b', 'c']

方法 1:使用sort()方法

要使用Python sort()方法,我们需要先将所有列表值转换为str类型。现在有两种方法可以将值转换为字符串。

  • 方法#1:列表理解
    Python列表推导可以简单地用于将列表的每个元素转换为字符串类型。我们对其进行排序,因为现在所有值都是 str 类型,所以我们将最终列表更改回其原始形式。
    # Python3 program to Sort list 
    # containing alpha and numeric values
      
    def sort(lst):
        lst = [str(i) for i in lst]
        lst.sort()
        lst = [int(i) if i.isdigit() else i for i in lst ]
        return lst
                  
    # Driver code
    lst = ['k', 5, 'e', 3, 'g', 7, 0, 't']
    print(sort(lst))
    
    输出:
    [0, 3, 5, 7, 'e', 'g', 'k', 't']
    
  • 方法#2:使用按键函数

    Key函数用作排序比较的键,在我们的例子中它等于str

    # Python3 program to Sort list 
    # containing alpha and numeric values
    def sort(lst):
      
        lst.sort(key = str)
        return lst
      
    # Driver code
    lst = ['k', 5, 'e', 3, 'g', 7, 0, 't']
    print(sort(lst))
    
    输出:
    [0, 3, 5, 7, 'e', 'g', 'k', 't']
    

方法2:排序()

或者,您也可以将 Python 的内置函数sorted()用于相同目的。 sort()sorted()之间最简单的区别是: sort()不返回任何值,而sorted()返回一个可迭代列表。现在又有两种使用sorted()的方法。

  • 方法#1:使用按键函数
    # Python3 program to Sort list 
    # containing alpha and numeric values
      
    def sort(lst):
      
        return sorted(lst, key = str)
                  
    # Driver code
    lst = ['k', 5, 'e', 3, 'g', 7, 0, 't']
    print(sort(lst))
    
    输出:
    [0, 3, 5, 7, 'e', 'g', 'k', 't']
    
  • 方法#2:拉姆达
    # Python3 program to Sort list 
    # containing alpha and numeric values
      
    def sort(lst):
          
        return sorted(lst, key = lambda x: (isinstance(x, str), x))
                  
    # Driver code
    lst = ['k', 5, 'e', 3, 'g', 7, 0, 't']
    print(sort(lst))
    
    输出:
    [0, 3, 5, 7, 'e', 'g', 'k', 't']