Python 字符串怎么排序
在Python中,字符串排序是一个常见的操作。字符串排序可以按照字母顺序或者自定义规则进行排序。本文将详细介绍如何在Python中对字符串进行排序。
按照字母顺序排序
示例代码1:按照字母顺序对字符串列表进行排序
strings = ['deepinout.com', 'apple', 'banana', 'cat']
sorted_strings = sorted(strings)
print(sorted_strings)
Output:
示例代码2:按照字母顺序对字符串进行排序
string = 'deepinout.com'
sorted_string = ''.join(sorted(string))
print(sorted_string)
Output:
按照自定义规则排序
示例代码3:按照字符串长度排序
strings = ['deepinout.com', 'apple', 'banana', 'cat']
sorted_strings = sorted(strings, key=len)
print(sorted_strings)
Output:
示例代码4:按照字符串中包含的数字排序
strings = ['deepinout.com', 'apple123', 'banana456', 'cat']
sorted_strings = sorted(strings, key=lambda x: ''.join(filter(str.isdigit, x)))
print(sorted_strings)
Output:
忽略大小写排序
示例代码5:忽略大小写按照字母顺序排序
strings = ['Deepinout.com', 'apple', 'banana', 'Cat']
sorted_strings = sorted(strings, key=str.lower)
print(sorted_strings)
Output:
逆序排序
示例代码6:逆序按照字母顺序排序
strings = ['deepinout.com', 'apple', 'banana', 'cat']
sorted_strings = sorted(strings, reverse=True)
print(sorted_strings)
Output:
多重排序
示例代码7:先按照字符串长度排序,再按照字母顺序排序
strings = ['deepinout.com', 'apple', 'banana', 'cat']
sorted_strings = sorted(strings, key=lambda x: (len(x), x))
print(sorted_strings)
Output:
示例代码8:先按照字符串中包含的数字排序,再按照字母顺序排序
strings = ['deepinout.com', 'apple123', 'banana456', 'cat']
sorted_strings = sorted(strings, key=lambda x: (''.join(filter(str.isdigit, x)), x))
print(sorted_strings)
Output:
自定义排序规则
示例代码9:根据自定义规则排序
def custom_sort(string):
if 'deepinout.com' in string:
return 0
elif 'apple' in string:
return 1
elif 'banana' in string:
return 2
else:
return 3
strings = ['deepinout.com', 'apple', 'banana', 'cat']
sorted_strings = sorted(strings, key=custom_sort)
print(sorted_strings)
Output:
使用sorted函数的key参数
在上面的示例中,我们使用了sorted函数的key参数来指定排序规则。key参数接受一个函数作为参数,该函数将应用于每个元素,然后根据函数的返回值进行排序。
示例代码10:使用sorted函数的key参数按照字符串长度排序
strings = ['deepinout.com', 'apple', 'banana', 'cat']
sorted_strings = sorted(strings, key=len)
print(sorted_strings)
Output:
示例代码11:使用sorted函数的key参数按照字符串中包含的数字排序
strings = ['deepinout.com', 'apple123', 'banana456', 'cat']
sorted_strings = sorted(strings, key=lambda x: ''.join(filter(str.isdigit, x)))
print(sorted_strings)
Output:
使用sorted函数的reverse参数
sorted函数还有一个reverse参数,用于指定是否逆序排序。
示例代码12:使用sorted函数的reverse参数逆序排序
strings = ['deepinout.com', 'apple', 'banana', 'cat']
sorted_strings = sorted(strings, reverse=True)
print(sorted_strings)
Output:
使用sorted函数的cmp参数
在Python2中,sorted函数还有一个cmp参数,用于指定自定义比较函数。在Python3中,cmp参数已经被移除,可以使用key参数代替。
示例代码13:使用sorted函数的cmp参数自定义比较函数
def custom_cmp(x, y):
if len(x) < len(y):
return -1
elif len(x) > len(y):
return 1
else:
return 0
strings = ['deepinout.com', 'apple', 'banana', 'cat']
sorted_strings = sorted(strings, cmp=custom_cmp)
print(sorted_strings)
使用operator模块
Python的operator模块提供了一些常见的操作符对应的函数,可以方便地进行排序操作。
示例代码14:使用operator模块按照字符串长度排序
import operator
strings = ['deepinout.com', 'apple', 'banana', 'cat']
sorted_strings = sorted(strings, key=operator.length_hint)
print(sorted_strings)
Output:
示例代码15:使用operator模块按照字符串中包含的数字排序
import operator
strings = ['deepinout.com', 'apple123', 'banana456', 'cat']
sorted_strings = sorted(strings, key=lambda x: ''.join(filter(str.isdigit, x)))
print(sorted_strings)
Output:
使用itemgetter函数
operator模块中的itemgetter函数可以用来获取对象的某个属性值,可以方便地进行排序操作。
示例代码16:使用itemgetter函数按照字符串长度排序
from operator import itemgetter
strings = ['deepinout.com', 'apple', 'banana', 'cat']
sorted_strings = sorted(strings, key=itemgetter(1))
print(sorted_strings)
Output:
示例代码17:使用itemgetter函数按照字符串中包含的数字排序
from operator import itemgetter
strings = ['deepinout.com', 'apple123', 'banana456', 'cat']
sorted_strings = sorted(strings, key=lambda x: ''.join(filter(str.isdigit, x)))
print(sorted_strings)
Output:
使用attrgetter函数
attrgetter函数可以用来获取对象的属性值,可以方便地进行排序操作。
示例代码18:使用attrgetter函数按照字符串长度排序
from operator import attrgetter
strings = ['deepinout.com', 'apple', 'banana', 'cat']
sorted_strings = sorted(strings, key=attrgetter('length'))
print(sorted_strings)
示例代码19:使用attrgetter函数按照字符串中包含的数字排序
from operator import attrgetter
strings = ['deepinout.com', 'apple123', 'banana456', 'cat']
sorted_strings = sorted(strings, key=lambda x: ''.join(filter(str.isdigit, x)))
print(sorted_strings)
Output:
总结
本文介绍了在Python中对字符串进行排序的各种方法,包括按照字母顺序排序、自定义规则排序、忽略大小写排序、逆序排序、多重排序、自定义排序规则等。