当前位置: 首页 > wzjs >正文

网站开发人员知乎微信公众号小程序怎么发布

网站开发人员知乎,微信公众号小程序怎么发布,搜索引擎费用,展厅设计公司西安文章目录 Python排序函数全面指南:从基础到高级1. 两种主要排序方式2. 基本参数详解2.1 key参数:自定义排序规则2.2 reverse参数:控制排序方向 3. 高级排序技巧3.1 多级排序3.2 稳定排序 4. 性能考虑5. 特殊排序场景5.1 对自定义对象排序5.2 …

文章目录

  • Python排序函数全面指南:从基础到高级
    • 1. 两种主要排序方式
    • 2. 基本参数详解
      • 2.1 key参数:自定义排序规则
      • 2.2 reverse参数:控制排序方向
    • 3. 高级排序技巧
      • 3.1 多级排序
      • 3.2 稳定排序
    • 4. 性能考虑
    • 5. 特殊排序场景
      • 5.1 对自定义对象排序
      • 5.2 不区分大小写的字符串排序
    • 6. 排序函数对比表
    • 7. 实用技巧总结

Python排序函数全面指南:从基础到高级

排序是编程中最常用的操作之一,Python提供了多种排序方法。本文将全面介绍Python中的排序函数,包括内置函数sorted()和列表方法sort(),以及它们的关键属性和方法。

1. 两种主要排序方式

Python中有两种主要的排序方法:

方法类型返回值原列表是否改变
sorted()内置函数新排序列表不改变原列表
list.sort()列表方法None改变原列表
# sorted() 示例
numbers = [3, 1, 4, 1, 5, 9, 2]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # [1, 1, 2, 3, 4, 5, 9]
print(numbers)         # [3, 1, 4, 1, 5, 9, 2] (原列表未改变)# sort() 示例
numbers = [3, 1, 4, 1, 5, 9, 2]
numbers.sort()
print(numbers)  # [1, 1, 2, 3, 4, 5, 9] (原列表已改变)

2. 基本参数详解

2.1 key参数:自定义排序规则

key参数允许你指定一个函数,该函数将应用于每个元素,然后根据函数返回的结果进行排序。

# 按字符串长度排序
words = ["apple", "banana", "cherry", "date"]
sorted_words = sorted(words, key=len)
print(sorted_words)  # ['date', 'apple', 'banana', 'cherry']# 按元组的第二个元素排序
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
sorted_pairs = sorted(pairs, key=lambda x: x[1])
print(sorted_pairs)  # [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]

2.2 reverse参数:控制排序方向

reverse参数是一个布尔值,决定排序是升序(False)还是降序(True)。

numbers = [3, 1, 4, 1, 5, 9, 2]# 升序排序(默认)
print(sorted(numbers))          # [1, 1, 2, 3, 4, 5, 9]# 降序排序
print(sorted(numbers, reverse=True))  # [9, 5, 4, 3, 2, 1, 1]

3. 高级排序技巧

3.1 多级排序

通过返回元组作为key函数的返回值,可以实现多级排序。

students = [{'name': 'Alice', 'grade': 'A', 'age': 20},{'name': 'Bob', 'grade': 'B', 'age': 19},{'name': 'Charlie', 'grade': 'A', 'age': 21},{'name': 'David', 'grade': 'B', 'age': 20}
]# 先按grade升序,再按age降序
sorted_students = sorted(students, key=lambda x: (x['grade'], -x['age']))
for student in sorted_students:print(student)

3.2 稳定排序

Python的排序是稳定的,这意味着当多个元素具有相同的key时,它们会保持原来的相对顺序。

data = [('red', 1), ('blue', 1), ('red', 2), ('blue', 2)]
# 按元组的第二个元素排序
sorted_data = sorted(data, key=lambda x: x[1])
print(sorted_data)
# 输出: [('red', 1), ('blue', 1), ('red', 2), ('blue', 2)]
# 注意 ('red', 1) 和 ('blue', 1) 保持了原来的顺序

4. 性能考虑

Python使用的排序算法是Timsort,它具有以下特点:

  • 最坏情况时间复杂度:O(n log n)
  • 最好情况时间复杂度:O(n) (当数据已经部分有序时)
  • 空间复杂度:O(n)
import random
import time# 生成一个大列表
big_list = [random.randint(0, 100000) for _ in range(1000000)]# 测量排序时间
start = time.time()
sorted_list = sorted(big_list)
end = time.time()
print(f"排序100万个元素耗时: {end - start:.2f}秒")

5. 特殊排序场景

5.1 对自定义对象排序

可以通过定义__lt__方法或使用key参数对自定义对象排序。

class Student:def __init__(self, name, grade):self.name = nameself.grade = gradedef __repr__(self):return f"{self.name}: {self.grade}"# 定义小于方法,用于比较def __lt__(self, other):return self.grade < other.gradestudents = [Student('Alice', 'A'),Student('Bob', 'C'),Student('Charlie', 'B')
]print(sorted(students))  # 自动使用__lt__方法比较

5.2 不区分大小写的字符串排序

fruits = ['apple', 'Banana', 'cherry', 'Date']
print(sorted(fruits))  # ['Banana', 'Date', 'apple', 'cherry'] (默认区分大小写)
print(sorted(fruits, key=lambda x: x.lower()))  # ['apple', 'Banana', 'cherry', 'Date']

6. 排序函数对比表

特性sorted()list.sort()
适用对象任何可迭代对象仅列表
返回值新排序列表None
原列表改变不改变改变
内存使用更多(创建新列表)较少(原地排序)
使用场景需要保留原列表时不需要原列表时

7. 实用技巧总结

  1. 简单升序排序:直接使用sorted()sort()

    sorted([5, 2, 3, 1, 4])  # [1, 2, 3, 4, 5]
    
  2. 降序排序:添加reverse=True

    sorted([5, 2, 3, 1, 4], reverse=True)  # [5, 4, 3, 2, 1]
    
  3. 复杂对象排序:使用key参数

    sorted(['apple', 'banana', 'cherry'], key=len)  # 按长度排序
    
  4. 多条件排序:返回元组作为key

    sorted(students, key=lambda x: (x['grade'], x['age']))
    
  5. 原地排序:当不需要保留原列表时使用sort()

    lst = [5, 2, 3, 1, 4]
    lst.sort()  # lst现在是[1, 2, 3, 4, 5]
    

掌握这些排序技巧将大大提高你在Python中处理数据的效率和灵活性。记住选择哪种排序方法取决于你的具体需求:是否需要保留原列表,以及排序对象的类型。

http://www.dtcms.com/wzjs/816093.html

相关文章:

  • 中国知名网站建设公司北京服务器租用
  • 建设局网站瓯龙建州府3号楼做视频包的网站
  • 响应式网站 企业模版最新营销模式
  • 无锡网站制作专业服务公司大鹏手机网站建设
  • 网站建设完整教程视频教程网站上咱们做鱼饵
  • 手机兼职赚钱正规平台网站seo快速排名
  • 用wordpress建仿站凡客诚品还有人买吗
  • 口碑好的购物网站建设公司开发设计推荐
  • 网站建设与维护视频教程哪个网站虚拟主机好
  • 做网站用哪个服务器做百度推广需要什么条件
  • 北京做网站的开发公司装修论坛网站有哪些
  • 太原住房和城乡建设部网站制作文字图片
  • 长沙做网站设计的公司论述简述网站制作的步骤
  • 门户网站建设要求网站内的搜索怎么做的
  • 天津河北做网站的公司排名教人做甜品的网站
  • 建设银行论坛网站网站建设价格如何
  • 河北省建设执业注册中心网站在线app
  • 网站空间免费 优帮云线上商城怎么开
  • 简洁的网站案例侨联网站建设方案
  • 中联建设集团股份有限公司网站物流网站建设规划书
  • 中国上海门户网站沧州市网站建设
  • 热门课程自己做网站凡科网是做什么的
  • 国外网站源码怎么做 社区网站
  • 网站建设 php 企业网站宁乡网站建设点燃网络
  • wordpress弹幕主题做360手机网站优化
  • 自学建百度首页网站wordpress移动显示
  • 网站在阿里云备案流程企业形象宣传策划方案
  • 手机网站头部代码网页设计实训报告总结与收获
  • 网站安全优化wordpress侧边栏缩略图
  • 用asp做网站需要准备什么免费3d建模软件