python中 .sort()、 sorted()和 .reverse() 、reversed()的区别

原文链接?


现在举例说明:
  1. .sort() 相当于: .sort(reverse=False). 若 reverse=True,则是降序排列。
a = [1,4,5,3,2,4,5,6,7,8]
b = a.sort()
print(a)
print(b)
#a.sort()改变了原有序列表a

[1, 2, 3, 4, 4, 5, 5, 6, 7, 8]
None

  1. .sorted()
c = [1,4,5,3,2,4,5,6,7,8]
d = sorted(c)
print(c)
print(d)
#sorted(c)没改变原有序列表c,返回一个列表

[1, 4, 5, 3, 2, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 4, 5, 5, 6, 7, 8]

  1. .reverse()
e = [1,4,5,3,2,4,5,6,7,8]
 f = e.reverse()
print(e)
print(f)
#e.reverse()改变了原有序列表e

[8, 7, 6, 5, 4, 2, 3, 5, 4, 1]
None

  1. .reversed()
g = [1,4,5,3,2,4,5,6,7,8]
h = reversed(g)
print(g)
print(h)
#reversed(g)没改变了原有序列表g,返回一个迭代器

[1, 4, 5, 3, 2, 4, 5, 6, 7, 8]
<list_reverseiterator object at 0x0000000002B72630>

### Python 中 `sorted` 函数的 `reverse` 参数使用方法 在 Python 的 `sorted()` 函数中,`reverse` 是一个命名关键字参数,用于指定排序的方向。如果设置为 `True`,则按降序排列;如果是默认值 `False`,则按升序排列。 以下是关于如何正确使用 `sorted()` 其 `reverse` 参数的关键点: #### 关键点解析 1. **命名关键字参数** 命名关键字参数必须按照定义的名字传递给函数,不能随意更改名称[^3]。例如,在调用 `sorted()` 时,只有 `reverse` 这一名字有效,其他名字如 `reverse1` 将引发错误。 2. **位置参数与关键字参数顺序** 如果混合使用位置参数关键字参数,则所有关键字参数必须位于位置参数之后。违反这一规则会触发语法错误 (SyntaxError)[^4]。 3. **常见错误示例** 下面是一些常见的错误及其原因分析: - 错误一:`TypeError: <lambda>() missing 1 required positional argument: 'y'` 表明 lambda 函数缺少必要的位置参数[^2]。 ```python sorted([1, 2, 3], key=lambda x, y: x + y) # 此处 lambda 定义了两个参数 x y,但实际只传入了一个序列元素作为 x。 ``` - 错误二:`TypeError: 'reverse1' is an invalid keyword argument for sort()` 显示自定义无效的关键字参数被尝试传递给了 `sort()` 方法。 ```python sorted([1, 2, 3], reverse1=True) # 应改为合法的关键字参数 reverse=True 或者 reverse=False。 ``` - 错误三:`SyntaxError: positional argument follows keyword argument` 提醒我们不应让位置参数出现在关键字参数后面。 ```python display(sep=';', 'killer') # 改正方式是调整参数顺序或将所有参数转换成关键字形式。 ``` #### 正确使用的代码实例 下面展示了一些正确的 `sorted()` 调用例子以及它们的功能说明: ```python # 升序排序,默认行为 numbers = [5, 2, 9, 1] result = sorted(numbers) print(result) # 输出 [1, 2, 5, 9] # 降序排序 desc_result = sorted(numbers, reverse=True) print(desc_result) # 输出 [9, 5, 2, 1] # 自定义排序逻辑(基于绝对值) abs_sorted = sorted([-3, 1, -2], key=abs) print(abs_sorted) # 输出 [1, -2, -3] # 字符串长度排序 strings = ['apple', 'banana', 'pear'] length_sorted = sorted(strings, key=len) print(length_sorted) # 输出 ['pear', 'apple', 'banana'] # 结合多个条件排序 data = [('Alice', 25), ('Bob', 20), ('Charlie', 30)] complex_sort = sorted(data, key=lambda x: (x[1], x[0])) print(complex_sort) # 按年龄升序再姓名字母顺序 [(‘Bob’, 20), (‘Alice’, 25), (‘Charlie’, 30)] ``` 以上展示了不同场景下 `sorted()` 的灵活应用,并强调了遵循语法规则的重要性。 ### 总结 为了防止出现诸如 `SyntaxError` 或 `TypeError` 类型的异常,请严格遵守以下原则: - 只能使用官方文档规定的参数名称; - 确保关键字参数始终放在位置参数之后; - 对于复杂的排序需求,合理设计匿名函数或辅助函数以满足特定规则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值