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']