【python】字符串List按照长度排序
1. sorted()
sorted(iterable, cmp=None, key=None, reverse=False)
参数:
iterable
-- 是可迭代类型
cmp
-- 用于比较的函数,比较什么由key决定
key
-- 用列表元素的某个属性或函数进行作为关键字,有默认值,迭代集合中的一项
reverse
-- 排序规则. reverse = True 降序 或者 reverse = False 升序(默认值)
返回值:
一个经过排序的可迭代类型,与iterable一样。
2. list.sort()
list.sort(cmp=None, key=None, reverse=False)
参数:
cmp
-- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
key
-- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse
-- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
返回值:
该方法没有返回值,但是会对列表的对象进行排序。
示例
# 示例数据
myList = ['青海省','内蒙古自治区','西藏自治区','新疆维吾尔自治区','广西壮族自治区']
# 方法一
myList = ['青海省','内蒙古自治区','西藏自治区','新疆维吾尔自治区','广西壮族自治区']
myList1 = sorted(myList,key = lambda i:len(i),reverse=True)
print(myList1)
# ['新疆维吾尔自治区', '广西壮族自治区', '内蒙古自治区', '西藏自治区', '青海省']
# 方法二
myList = ['青海省','内蒙古自治区','西藏自治区','新疆维吾尔自治区','广西壮族自治区']
myList.sort(key = lambda i:len(i),reverse=True)
print(myList)
# ['新疆维吾尔自治区', '广西壮族自治区', '内蒙古自治区', '西藏自治区', '青海省']
扩展
利用lambda
关键字,可对list进行自定义的排序
例如
def sort_with_pos(x: list) -> (list, list):
elem_pos_tuples = [(x[pos], pos) for pos in range(len(x))]
elem_pos_tuples = sorted(elem_pos_tuples, key=lambda t: t[0])
sorted_x = [t[0] for t in elem_pos_tuples]
sorted_pos = [t[1] for t in elem_pos_tuples]
return sorted_x, sorted_pos
参考
本文来自博客园,作者:Minerw,转载请注明原文链接:https://www.cnblogs.com/minerw/p/python-sort-str-list-by-length.html