专栏名称: 新语数据故事汇
《新语数据故事汇,数说新语》科普数据科学、讲述数据故事,深层次挖掘数据价值。
相关文章推荐
人民网舆情数据中心  ·  翻新卫生巾黑幕曝光,舆论呼吁构建全链条闭环治理体系 ·  21 小时前  
中国中医  ·  【媒体聚焦】央视《正点财经》| ... ·  昨天  
中国中医  ·  【媒体聚焦】央视《新闻直播间》| ... ·  昨天  
北京厚朴中医  ·  新生的快乐 ·  3 天前  
人民网舆情数据中心  ·  国家邮政局对上海韵达货运立案调查、部分厂商回 ... ·  2 天前  
51好读  ›  专栏  ›  新语数据故事汇

一文带您掌握10个强大的Python内置函数

新语数据故事汇  · 公众号  ·  · 2024-10-17 16:02

正文

我们经常有这样的经历:花了很长时间编写和调试一个特定功能的函数,却发现Python已经有类似的内置函数。我们常常在重复造轮子。Python包含了许多强大的内置函数,使用这些函数来简化代码可以为我们节省宝贵的时间。

接下来,我们将介绍一些我们经常忽略的强大Python内置函数。

ZIP_Longest

合并不同大小的可迭代对象。Python中的 zip_longest() 函数来自 itertools 模块,允许你将多个长度不同的可迭代对象进行合并。与 zip() 不同,后者会在最短的可迭代对象处停止, zip_longest() 会一直合并,直到最长的可迭代对象耗尽,缺失的值会用指定的 fillvalue 填充(默认为 None )。

  • 处理不等长的可迭代对象 :在处理长度不同的可迭代对象时非常有用,确保由于尺寸不均而没有数据丢失。

  • 允许自定义填充 fillvalue 参数允许你指定如何处理缺失值,这为合并来自多个来源的数据提供了灵活性。

zip_longest() 函数可以用于:

  • 合并来自多个来源的数据,尤其是长度不均匀的数据。

  • 比较没有直接关联的数据点。

  • 处理不等维度的矩阵或网格。

from itertools import zip_longest
list1 = [1, 2, 3]list2 = ['a', 'b']list3 = ['X', 'Y', 'Z', 'W']
result = list(zip_longest(list1, list2, list3))print(result)
result = list(zip_longest(list1, list2, list3, fillvalue='-'))print(result)
 

Divmod

divmod(a, b) 函数返回一个包含商和余数的元组,当将 a 除以 b 时。它是 a // b (商)和 a % b (余数)的组合形式。

这个函数在需要同时得到商和余数的情况下非常实用。它通过一步操作代替了两个独立的操作(整数除法和取模),从而减少了开销。

divmod() 在以下场景中非常有用:

  • 当你需要将秒转换为分钟和秒,小时转换为分钟和小时等时, divmod() 可以快速计算这两个值。

  • 计算货币分解,例如将总金额分解为较大的面额和较小的零钱。

a = 20b = 6
result = divmod(a, b)print(result)
quotient, remainder = resultprint(f"Quotient: {quotient}, Remainder: {remainder}")

Compile

将代码编译为字节码,快速而简洁。Python中的 compile() 函数将源代码编译为可以稍后执行的代码对象。它允许你将一段Python代码字符串转换为代码对象,然后可以将其传递给 exec() eval() 进行执行。

compile() 函数允许你动态执行存储在字符串中的Python代码,这在一些高级用例中非常有用,例如模板引擎、REPL系统或动态生成代码时。

code_string = '3 * 4 + 5'compiled_code = compile(code_string, '', 'eval')print(compiled_code)result = eval(compiled_code)print(result)

Bytearray

创建和修改字节序列。 bytearray() 函数创建一个可变的字节序列,它是字节数据的灵活表示形式。与不可变的 bytes 不同, bytearray 允许修改,适用于需要操作或更新字节数据的场景。

bytearray 允许修改,适用于需要动态构建或更改字节数据的场景。在处理文件、网络协议或流中的二进制数据时,它非常有用,尤其是在需要频繁修改的情况下。

data = bytearray("Hello, World!", "utf-8")print(data) data[7:12] = b'Python'print(data)

Repr

查看对象背后的代码。Python中的 repr() 函数返回对象的字符串表示形式,理想情况下可以使用 eval() 函数重新创建该对象。它提供对象的正式字符串表示,适用于调试和日志记录。

number = 42string = "Hello, World!"list_obj = [1, 2, 3]
print(repr(number))print(repr(string))print(repr(list_obj))

Memoryview

轻松实现直接内存访问。Python中的 memoryview() 函数创建一个内存视图对象,允许你访问支持缓冲区协议的对象的内部数据,而无需复制数据。这在高效处理大数据集时特别有用,因为它允许对数据的切片进行操作。

memoryview() 通过允许直接访问对象的底层内存,避免了复制数据的开销。在科学计算或数据分析中,处理大型数组或缓冲区非常常见, memoryview() 可以通过减少内存使用大大提升性能。

data = bytearray(b"Hello, World!"






请到「今天看啥」查看全文