Loading

【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

参考

https://blog.csdn.net/moxiaobeiMM/article/details/80702496

https://www.runoob.com/python/att-list-sort.html

posted @ 2022-07-06 20:51  Minerw  阅读(1273)  评论(0编辑  收藏  举报