python内置函数 M

本文详细介绍了Python内置的map(),max(),min(),和memoryview()函数,包括它们的用途、参数、示例以及如何在不同场景下使用。重点展示了如何通过这些函数进行数据处理和操作。
摘要由CSDN通过智能技术生成

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 文档

  • 47
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

棠越

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值