Python中的reverse, reversed, sort, sorted
参考:
https://note.nkmk.me/en/python-reverse-reversed/
https://note.nkmk.me/en/python-list-sort-sorted/
1. Reverse
对于list, 可以使用 .reverse(), reversed(), 和切片[::-1] 对于字符串和元组(都不可变),可以使用reversed()和切片[::-1]
↑ .reverse() 是列表的方法,是in-place的,会改变原列表,所以String和Tuple不能使用(切片操作实际是一种copy,会生成一个新的列表而不会改变原列表)
1.1 list
- List type method
reverse()
reverses the original list.
reverse()是列表的一个内置方法,改变原列表,reverse()返回None
1 | org_list = [1, 2, 3, 4, 5] |
- Built-in function
reversed()
returns a reverse iterator
reversed()是python的一个内置方法,不会改变原列表,返回一个迭代器,可用list()获取作用后的值
1 | org_list = [1, 2, 3, 4, 5] |
- 切片:\([start:end:step]\)
忽略start和end时,选取整个list,step=-1,从后往前依次遍历
1 | org_list = [1, 2, 3, 4, 5] |
1.2 string
不能使用s.reverse()方法:
1 | s = 'abcde' |
法一:reversed()
因为迭代器不能直接转换成字符串,转换成list后还需使用join()方法
1 | org_str = 'abcde' |
关于 join()
1 | S.join(iterable) -> str |
法二:切片
1 | new_str = org_str[::-1] |
1.3 tuple
法一:reversed()
使用tuple()将迭代器转换成tuple
1 | org_tuple = (1, 2, 3, 4, 5) |
法二:切片
1 | new_tuple = org_tuple[::-1] |
2. Sort
对于list,可使用 .sort() 或 sorted() 对于字符串和元组,可使用 sorted()
↑ .sort()是列表的方法,是in-place的,会改变原列表,所以String和Tuple不能使用
2.1 list
- List type method
sort()
sorts the original list
sort() 是列表的一个内置方法,改变原列表,sort() 返回None,默认按升序排列
1 | org_list = [3, 1, 4, 5, 2] |
降序排列:
1 | org_list.sort(reverse=True) |
- Built-in function
sorted()
returns a sorted list
sorted() 是python的一个内置方法,不会改变原列表,返回一个sorted list,默认按升序排列
1 | org_list = [3, 1, 4, 5, 2] |
降序排列:
1 | new_list_reverse = sorted(org_list, reverse=True) |
2.2 string
使用 sorted()
因为 sorted() 返回一个list,还需使用 join() 转换成 string
1 | org_str = 'cebad' |
The order of the characters is determined by their Unicode code point.
2.2 tuple
使用sorted()
需要使用tuple()将结果转换成tuple
1 | org_tuple = (3, 1, 4, 5, 2) |
2.3 按指定的 key 排序
.sort() 和 sorted() 都支持按 key
进行排序。key
参数接收一个可调用的对象(例如一个函数),该可调用对象只接收单个参数。
例如,可以按绝对值或字符长度进行排序:
1 | l = [-3, 1, 4, -5, 2] |
1 | l = ['b', 'cc', 'aaa'] |
结合lambda表达式: 1
2
3
4# 按照元组的第二个元素进行排序
a= [(0,2), (4,3), (9,9), (10,-1)]
print(sorted(a, key = lambda item: item[1]))
# [(10, -1), (0, 2), (4, 3), (9, 9)]
.sort() 用法同上。
关于字典的排序见 Advanced Python Types | qypx の blog