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

【Python 语法】常用 Python 内置函数

  • reversed() 反转
    • reversed() 的语法
    • 反转字符串、列表、元组
  • sorted() 自定义排序
    • sorted() 语法
    • 使用示例
      • 1. 基本排序:默认升序排列
      • 2. 基本排序:降序排列
      • 3. 自定义排序:使用 `key` 参数
      • 4. 自定义排序:按某种规则进行排序
      • 5. 排序字典:根据字典的键
      • 6. 排序字典:根据字典的值
    • `sorted()` vs `list.sort()`

reversed() 反转

reversed() 用来返回一个 反向迭代器,该迭代器可以遍历输入对象的元素,但 从后往前遍历

需要注意的是,reversed()不会直接修改原对象,它返回的是一个迭代器,你可以将它 转换成列表、元组或字符串等其他类型

使用场景:当需要反向遍历某个序列,但不想创建一个新的反转列表时,reversed() 会非常有用。

reversed() 的语法

reversed(sequence)
  • 参数sequence 是一个可以 支持反向迭代的序列(如字符串、列表、元组等)。
  • 返回值:返回一个 反向迭代器

反转字符串、列表、元组

  1. 反转字符串
s = "hello"
reversed_s = reversed(s)
print(''.join(reversed_s))  # 输出: "olleh"

Python 的 reversed() 函数返回一个反向迭代器,可以用 ''.join() 来将其转换回字符串。

Python 的切片操作是反转字符串最常见和高效的方法之一。通过 [::-1] 可以轻松反转一个字符串。

def reverse_string(s: str) -> str:
    return s[::-1]

# 示例
s = "hello"
print(reverse_string(s))  # 输出: "olleh"
  1. 反转列表
lst = [1, 2, 3, 4]
reversed_lst = reversed(lst)
print(list(reversed_lst))  # 输出: [4, 3, 2, 1]
  1. 反转元组
t = (1, 2, 3, 4)
reversed_t = reversed(t)
print(tuple(reversed_t))  # 输出: (4, 3, 2, 1)
  • reversed() 返回的是一个反向迭代器,而不是一个直接反转的序列。如果想得到一个新的列表或字符串,需要将其转换。
  • reversed() 不能直接用于像整数、字典等不可反向迭代的对象

sorted() 自定义排序

sorted() 用于对任何可迭代对象进行排序,并返回一个新的排序后的列表。它不会修改原始对象,而是生成一个新的排序后的列表。可以用来排序列表、元组、字符串,甚至是字典中的键等。

sorted() 语法

sorted(iterable, *, key=None, reverse=False)

参数说明

  1. iterable(必需):想要排序的可迭代对象。可以是列表、元组、字典的键、字符串等。
  2. key(可选):一个函数,用来在排序过程中进行自定义排序。该函数接受一个元素作为输入,并返回一个值,排序时将 基于返回值来进行排序
  3. reverse(可选):一个布尔值,默认值是 False。如果为 True,则按降序排列;如果为 False,则按升序排列
  4. 返回值:返回一个新的列表,包含已排序的元素原始的可迭代对象保持不变

使用示例

1. 基本排序:默认升序排列

numbers = [5, 3, 9, 1, 4]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # [1, 3, 4, 5, 9]

2. 基本排序:降序排列

numbers = [5, 3, 9, 1, 4]
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_desc) # [9, 5, 4, 3, 1]

3. 自定义排序:使用 key 参数

key=len 表示按 每个字符串的长度 进行排序。

words = ["apple", "banana", "grape", "kiwi"]
sorted_words = sorted(words, key=len) 
print(sorted_words) # ['kiwi', 'apple', 'grape', 'banana']

4. 自定义排序:按某种规则进行排序

如果想根据复杂的规则进行排序,可以传递一个自定义的排序函数

lambda x: x[-1] 表示按照 每个字符串的最后一个字母 进行排序。

# 按照字符串的字母顺序排序,但以最后一个字母为排序依据
words = ["apple", "banana", "grape", "kiwi"]
sorted_words = sorted(words, key=lambda x: x[-1]) 
print(sorted_words) # ['banana', 'kiwi', 'apple', 'grape']

5. 排序字典:根据字典的键

对于字典,如果希望按键排序,可以传入字典的键。

dictionary = {"apple": 4, "banana": 1, "cherry": 2, "date": 3}
sorted_keys = sorted(dictionary) 
print(sorted_keys) # ['apple', 'banana', 'cherry', 'date']

这里 sorted(dictionary) 默认**按字典的键(即字符串)**升序排序。

6. 排序字典:根据字典的值

如果希望按字典的值排序,可以使用 key 来指定排序的依据。

dictionary = {"apple": 4, "banana": 1, "cherry": 2, "date": 3}
sorted_by_value = sorted(dictionary, key=lambda x: dictionary[x])
print(sorted_by_value) # ['banana', 'cherry', 'date', 'apple']

这里用 lambda x: dictionary[x]按字典的值 进行排序。

sorted() vs list.sort()

  • sorted():返回一个新的排序后的列表,原始列表不变
  • list.sort()直接在原列表上进行排序,返回值是 None,即原地排序

例如:

# 使用 sorted()(不会改变原列表)
numbers = [5, 3, 9, 1, 4]
sorted_numbers = sorted(numbers)
print(numbers)  # 原列表不变 [5, 3, 9, 1, 4]
print(sorted_numbers)  # 返回新的排序后的列表 [1, 3, 4, 5, 9]

# 使用 list.sort()(会改变原列表)
numbers = [5, 3, 9, 1, 4]
numbers.sort()
print(numbers)  # 原列表已经改变,排序后的列表 [1, 3, 4, 5, 9]

相关文章:

  • 【Python爬虫(39)】掌控全局:分布式爬虫的任务管理与监控之道
  • 单元测试的策略有哪些,主要包括什么?
  • 【C/C++】分隔链表 (leetcode T86)
  • DeepSeek写俄罗斯方块手机小游戏
  • 图论 之 最小生成树
  • 深入解析Spring Cloud Config:构建高可用分布式配置中心
  • SpringBoot 新特性
  • C++ 设计模式-模板方法模式
  • 【ROS2】卡尔曼滤波学习:概念、数学推导和C++实现方法
  • 【Linux探索学习】第三十弹——线程互斥与同步(上):深入理解线程保证安全的机制
  • CPU、SOC、MPU、MCU--详细分析四者的区别
  • 【Springboot3】Springboot3 搭建RocketMQ 最简单案例
  • UE5 GamePlay 知识点
  • Powershell Install deepseek
  • 【JavaEE进阶】Spring MVC(4)-图书管理系统案例
  • Python 下载/安装
  • [免费]微信小程序智能商城系统(uniapp+Springboot后端+vue管理端)【论文+源码+SQL脚本】
  • 23.5.1 WebBrowser与网页交互
  • Python爬虫selenium验证-中文识别点选+图片验证码案例
  • Three.js 快速入门教程【六】相机控件 OrbitControls
  • 网站域名解析后多久能生效/百度手机端排名如何优化
  • 自己做的网站如何让百度收录/南宁百度seo推广
  • 章贡区综合网站建设商家/免费网络推广渠道
  • 小学网站建设方案/整站seo教程
  • 5g创业网站建设/长沙百度开户
  • 中小企业做网站推广/域名注册官网免费