Python 列表翻转:x.reverse() 与 x.sort(reverse=True) 的区别
Python 中的 x.reverse() 和 x.sort(reverse=True) 虽然都能改变列表元素的顺序,但它们的作用并不完全等价。
x.reverse() 会将列表 x 中的元素顺序翻转,即第一个元素变为最后一个,最后一个元素变为第一个,以此类推。例如:
x = [1, 2, 3, 4, 5]
x.reverse()
print(x) # 输出:[5, 4, 3, 2, 1]
x.sort(reverse=True) 会对列表 x 中的元素进行排序,从大到小排列。如果没有设置 reverse=True(默认为 False),则会从小到大排列。例如:
x = [3, 1, 4, 2, 5]
x.sort(reverse=True)
print(x) # 输出:[5, 4, 3, 2, 1]
因此,如果 x 中的元素都是可比较的(例如数字、字符串),那么 x.sort(reverse=True) 和 x.reverse() 会有相同的作用。
但是,如果 x 中的元素不可比较(例如自定义对象),x.sort(reverse=True) 会抛出 TypeError 异常,而 x.reverse() 则不会。例如:
class MyObject:
def __init__(self, value):
self.value = value
x = [MyObject(1), MyObject(3), MyObject(2)]
# 抛出 TypeError 异常
x.sort(reverse=True)
# 正常执行
x.reverse()
总结来说,x.reverse() 只进行元素顺序翻转,而 x.sort(reverse=True) 则会对元素进行排序。在元素可比较的情况下,它们的结果相同,但在元素不可比较的情况下,x.sort(reverse=True) 会引发异常。因此,在实际应用中,需要根据具体情况选择合适的函数。
原文地址: https://www.cveoy.top/t/topic/mXMP 著作权归作者所有。请勿转载和采集!