python内置函数 M

python内置函数 M

Python 解释器内置了很多函数和类型,任何时候都能使用。

M

名称描述
map返回一个迭代器,其中包含函数应用于每个元素的结果。
max返回给定可迭代对象(如列表、元组、字符串等)中的最大元素。
memoryview返回由给定实参创建的“内存视图”对象。
min返回给定可迭代对象(如列表、元组、字符串等)中的最小元素。
map(function, iterable, *iterables)

map()是一个内置函数,用于将一个函数应用于一个或多个序列(如列表、元组等)中的每一个元素,并返回一个迭代器,其中包含函数应用于每个元素的结果。

  • function:是要应用的函数。
  • iterable:是一个或多个可迭代对象(如列表、元组等),函数将应用于这些可迭代对象的每一个元素。

返回一个将 function 应用于 iterable 的每一项,并产生其结果的迭代器。 如果传入了额外的 iterables 参数,则 function 必须接受相同个数的参数并被用于到从所有可迭代对象中并行获取的项。 当有多个可迭代对象时,当最短的可迭代对象耗尽则整个迭代将会停止。 对于函数的输入已经是参数元组的情况,请参阅 itertools.starmap()

# 定义一个函数,用于将输入乘以2  
def multiply_by_two(x):return x * 2# 创建一个数字列表
numbers = [1, 2, 3, 4, 5]# 使用map()函数将multiply_by_two函数应用于numbers列表中的每个元素  
doubled_numbers = map(multiply_by_two, numbers)# 将迭代器转换为列表  
doubled_numbers_list = list(doubled_numbers)# 输出结果  
print(doubled_numbers_list)  # 输出: [2, 4, 6, 8, 10]

map()函数返回的是一个迭代器,因此如果你多次遍历这个迭代器,它不会重新计算函数应用于每个元素的结果。如果你需要多次使用这些结果,应该先将迭代器转换为列表或其他数据结构。

max(iterable, ***, key=None)

max(iterable, ***, key=None)

max(iterable, ***, default, key=None)

max(arg1, arg2, *args, key=None)

返回可迭代对象中最大的元素,或者返回两个及以上实参中最大的。

如果只提供了一个位置参数,它必须是非空 iterable,返回可迭代对象中最大的元素;如果提供了两个及以上的位置参数,则返回最大的位置参数。

有两个可选只能用关键字的实参。key 实参指定排序函数用的参数,如传给 list.sort() 的。default 实参是当可迭代对象为空时返回的值。如果可迭代对象为空,并且没有给 default ,则会触发 ValueError

如果有多个最大元素,则此函数将返回第一个找到的。这和其他稳定排序工具如 sorted(iterable, key=keyfunc, reverse=True)[0]heapq.nlargest(1, iterable, key=keyfunc) 保持一致。

在 3.4 版本发生变更: 增加了 default 仅限关键字形参。

在 3.8 版本发生变更: key 可以为 None

# 返回列表中的最大值
numbers = [1, 3, 9, 7, 5]
max_number = max(numbers)
print(max_number)  # 输出: 9# 返回字符串中的最大字符(基于ASCII值)
characters = 'abcd'
max_char = max(characters)
print(max_char)  # 输出: 'd'# 在字典中使用max()基于键或值
dictionary = {'a': 1, 'b': 20, 'c': 3, 'd': 15}# 基于键找到最大元素
max_key = max(dictionary.keys())
print(max_key)  # 输出: 'd'# 基于值找到最大元素
max_value = max(dictionary.values())
print(max_value)  # 输出: 20# 找到与最大值对应的键
max_key_for_value = max(dictionary, key=dictionary.get)
print(max_key_for_value)  # 输出: 'b'

当比较的对象不是数字时(例如字符串),max()函数将基于对象的自然顺序来确定哪个是最大的。对于自定义对象,你可以通过实现特殊的__gt__(大于)方法来定义它们的比较行为(或者__lt__小于)。

memoryview(object)

class memoryview(object)

返回由给定实参创建的“内存视图”对象。有关详细信息,请参阅 内存视图。

“内存视图”对象提供了一种读取和修改原始数据(如列表或字节串)的方式,而不必制作数据的完整副本。它尤其对于处理大型数据集或需要高效内存管理的场景非常有用。

memoryview() 通常与 bytesbytearray 对象一起使用,但也可以用于其他支持缓冲区协议的对象。

# 与 bytes 和 bytearray 一起使用
# 创建一个 bytes 对象
b = b'Hello World'# 创建一个 memoryview 对象
m = memoryview(b)# 访问 memoryview 中的元素
print(m[0])  # 输出: 72,这是 'H' 的 ASCII 值# 修改 memoryview 中的元素(如果原始对象是 bytearray)
# 注意:bytes 对象是不可变的,所以下面的代码会抛出异常
# b[0] = 65  # 这会抛出 TypeError# 使用 bytearray 来允许修改
ba = bytearray(b'Hello World')
ma = memoryview(ba)
ma[0] = 65  # 修改第一个字节为 'A' 的 ASCII 值
print(ba)  # 输出: b'Aello World'# 切片操作,允许你访问原始数据的子集。
ba = bytearray(b'Hello World')
ma = memoryview(ba)# 创建一个新的 memoryview 对象,它是原始数据的一个切片
ma_slice = ma[1:5]  # 包含 'e', 'l', 'l', 'o'
print(ma_slice.tobytes())  # 输出: b'ello'# 修改切片中的数据会反映到原始数据上
ma_slice[0] = 69  # 修改为 'E' 的 ASCII 值
print(ba)  # 输出: b'HEllo World'# 以不同的方式解释相同的数据。
ba = bytearray(b'\x01\x02\x03\x04')
ma = memoryview(ba)# 使用 'i' 格式(表示有符号整数)来解释数据
ma_int = ma.cast('i')
print(ma_int[0])  # 输出: 67305985,这是将四个字节解释为一个 32 位有符号整数的结果# 使用 'B' 格式(表示无符号字节)来解释数据(这是默认值)
ma_bytes = ma.cast('B')
print(ma_bytes[0])  # 输出: 1,这是第一个字节的值

在改变格式时,你必须确保新的格式与数据的实际内容相匹配,否则可能会得到无意义的结果。

memoryview() 提供了一种灵活且高效的方式来处理原始数据,尤其适用于需要避免不必要的数据复制或需要直接操作底层数据的场景。

min(iterable, ***, key=None)

min(iterable, ***, key=None)

min(iterable, ***, default, key=None)

min(arg1, arg2, *args, key=None)

返回可迭代对象中最小的元素,或者返回两个及以上实参中最小的。

如果只提供了一个位置参数,它必须是 iterable,返回可迭代对象中最小的元素;如果提供了两个及以上的位置参数,则返回最小的位置参数。

有两个可选只能用关键字的实参。key 实参指定排序函数用的参数,如传给 list.sort() 的。default 实参是当可迭代对象为空时返回的值。如果可迭代对象为空,并且没有给 default ,则会触发 ValueError

如果有多个最小元素,则此函数将返回第一个找到的。这和其他稳定排序工具如 sorted(iterable, key=keyfunc)[0]heapq.nsmallest(1, iterable, key=keyfunc) 保持一致。

在 3.4 版本发生变更: 增加了 default 仅限关键字形参。

在 3.8 版本发生变更: key 可以为 None

# 返回列表中的最小值
numbers = [1, 3, 9, 7, 5]
min_number = min(numbers)
print(min_number)  # 输出: 1

当比较的对象不是数字时(例如字符串),min()函数将基于对象的自然顺序来确定哪个是最小的。对于自定义对象,你可以通过实现特殊的__lt__(小于)方法来定义它们的比较行为(或者__gt__大于)。

参考:内置函数 — Python 3.12.2 文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/753496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言自定义库

编写 xx.c 和xx.h文件\将源代码编译为目标文件 gcc -c add.c sub.c 执行完毕后会生产add.o和sub.o文件静态库创建使用ar命令; ar -r libmymath.a add.o sub.o将库和main.c文件一起编译 gcc -o main main.c -lmymath -L./ 注意 上述书写格式不要错乱 -L 是指定文件路…

鸿蒙-项目创建及了解

目录 项目创建 1.App普通项目创建 2.元服务创建 项目结构 .hvigor .idea AppScope entry EntryAbility.ts pages resources module.json5 ohosTest hvigorfile.ts build-profile.json5 oh_modules build-profile.json5 hvigorfile.ts 项目运行 项目创建 F…

uniapp的描述的展开与收缩,超过三行有省略号才显示

html代码&#xff1a; <view class"desc_box"><view id"desc" class"desc" :class"open ? open : three">{{ data.desc }}</view><view class"expand theme-color" click"unfold" v-if&qu…

单模场哈密顿量推导

满足麦克斯韦方程和边界条件的单模场又下式&#xff08;1&#xff09;&#xff0c;&#xff08;2&#xff09;给出 --------&#xff08;1&#xff09; ---------&#xff08;2&#xff09; , 单模场的经典场能或者哈密顿量又下式给出&#xff1a; &#xff08;3&#xff09…

JUC并发编程(四)

1、同步模式保护性暂停 用一个线程等待另一个线程的执行结果 有一个结果需要从一个线程传递到另一个线程&#xff0c;让他们关联同一个中间类。如果有结果不断从一个线程到另一个线程那么可以使用消息队列&#xff08;见生产者/消费者&#xff09;。JDK 中&#xff0c;join 的…

WebAssembly探索篇(三)emcc和cmake编译opencv案例

文章目录 开发环境安装opencv环境 实践出真知完整项目效果图 踩坑fatal error: opencv2/opencv.hpp file not found增加软链ln&#xff08;无效&#xff09;改用自行安装opencv&#xff0c;再显示指定lib路径 emcc命令行运行方式 最近因为项目原因&#xff0c;研究了一下WebAss…

Anaconda概述

Anaconda是一个开源的Python发行版本&#xff0c;它整合了Python解释器、Conda包和环境管理器以及众多预装的科学计算库和工具包。这使得用户能够方便地使用和管理多个Python版本&#xff0c;并在不同的环境中调用不同的数据包。 Conda是Anaconda中的一个关键组件&#xff0c;…

C语言例:表达式 45-35+1^2 的值

代码如下&#xff1a; #include<stdio.h> int main(void) {int a;a 4&5-3&&51^2;printf("4&5-3&&51^2 %d\n",a);return 0; } 结果如下&#xff1a;

maven一点通

1.maven简介 Maven是一个基于Java的工程构建工具&#xff0c;用于管理和构建项目的依赖关系。它提供了一种标准的项目结构和一组约定&#xff0c;使得项目的开发、构建、部署和文档化更加容易和可靠。 Maven的主要功能包括&#xff1a; 依赖管理&#xff1a;Maven可以自动下载…

课设系统篇

《古代六扇门人员管理系统》 数据库 sixdoor 编码 utf8mb4 视图 查询官员等级 存储过程 CREATE DEFINERrootlocalhost PROCEDURE levelname(IN g_name VARCHAR(20)) BEGINSELECT name,level FROM servingofficials INNER JOIN jobtitle onservingofficials.role jobtitl…

Android性能自测

目录 一、应用启动耗时自测 二、帧率查看 三、Top命令查看系统资源占用 3.1 第一行&#xff1a;任务(进程) 3.2 第二行&#xff1a;mem状态 3.3 第三行&#xff1a;swap交换分区 3.4 第四行&#xff1a;cpu状态 3.5 第五行&#xff1a;标题 四、抓取trace.html文件分析…

【CSP考点回顾】C++标准库加速输入输出

C标准库加速输入输出 ios_base::sync_with_stdio(false);&#xff1a;取消C标准库&#xff08;iostream&#xff09;与C标准库&#xff08;stdio&#xff09;之间的同步。默认情况下&#xff0c;为了保证C的cin、cout与C的stdin、stdout能够互相交换数据&#xff0c;它们之间会…

基于tcp协议的网络通信(基础echo版.多进程版,多线程版,线程池版),telnet命令

目录 基础版 思路 辅助函数 服务端 代码 运行情况 -- telnet ip 端口号 传输的数据为什么没有转换格式 客户端 思路 代码 多进程版 引入 问题 解决 注意点 服务端 代码 运行情况 进程池版(简单介绍) 多线程版 引入 问题解决 注意点 服务端 代码 …

嵌入式Linux 内核的内存管理方法

内存管理的主要工作就是对物理内存进行组织,然后对物理内存的分配和回收。但是Linux引入了虚拟地址的概念。 虚拟地址的作用 如果用户进程直接操作物理地址会有以下的坏处: 1、 用户进程可以直接操作内核对应的内存,破坏内核运行。 2、 用户进程也会破坏其他进程的运行 …

连号区间数c++

题目 输入样例1&#xff1a; 4 3 2 4 1输出样例1&#xff1a; 7输入样例2&#xff1a; 5 3 4 2 5 1输出样例2&#xff1a; 9样例解释 第一个用例中&#xff0c;有 77 个连号区间分别是&#xff1a;[1,1],[1,2],[1,3],[1,4],[2,2],[3,3],[4,4][1,1],[1,2],[1,3],[1,4],[2,2…

洛谷团队欢迎你的加入!

前言 我开这个团队的目的&#xff0c;是可以让大家有什么不会的题目讨论讨论&#xff0c;互相帮助&#xff0c;希望大家能加入。 我的团队——VirgoPHL 作用 我会不定期想一些题目&#xff0c;或出一些比赛&#xff0c;大家可以积极参加。 结尾 真心希望大家参加。

详细讲解c语言结构体、联合体、枚举

目录 1、结构体类型声明 1.1结构体的定义 1.2 结构体变量的声明 1.3 结构体变量的创建和初始化 2、如何使创建的结构体所占内存最小 2.1 结构体内存对齐-存储 2.2 通过宏offsetof计算结构体内变量的偏移量 2.3 如何通过宏offsetof计算数组的偏移量 2.4 为什么存在内存对…

吴恩达机器学习笔记 二十四 决策树模型 学习过程 什么时候停止分裂 如何选择结点特征

案例&#xff1a;识别小猫&#xff0c;上面这个分类的特征 x 采用分类值&#xff08;几个离散的值&#xff09; 决策树最顶端的结点称根结点(root node)&#xff0c;除了根结点和叶子结点之外的叫决策结点(decision node)&#xff0c;最底层的叫叶子结点(leaf node)&#xff0c…

嵌入式领域机器学习入门指南

基本概念 机器学习是一门使计算机无需进行明确编程即可学习的科学。它主要利用数据或以往的经验,以此来改进计算机自身的性能。以下是一些核心概念: 监督学习: 训练数据包含输入和预期输出,模型的目的是学习这两者之间的映射关系。无监督学习: 训练数据只包含输入,没有标签…

C++ 11:基于范围的 for 循环

基于范围的for 循环&#xff08;Range-based for loop&#xff09;是 C11 标准引入的一项特性&#xff0c;它提供了一种更简洁、更安全的遍历容器&#xff08;如数组、向量等&#xff09;的方式。 与传统的 for 循环相比&#xff0c;基于范围的 for 循环自动处理迭代&#xff…