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