IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 五个令人愉悦的 Python 函数 -> 正文阅读

[Python知识库]五个令人愉悦的 Python 函数

今天分享5个有趣实用的python内置函数: enumeratezip__import__accumulatenamedtuple

合理巧妙地使用,可以将代码变的优雅简洁有趣!

点我,看原文,代码即可运行

1. enumerate函数

enumerate 函数可以将一个可迭代对象转换为一个索引序列,同时在迭代过程中给出索引和对应的元素。

基本用法:enumerate(iterable, start=0)

chessPieces = ["Pawns", "Rook", "Horse", "Bishops", "King", "Queen"]
for i in enumerate(chessPieces):
    print(i)
## 输出结果
# (0, "Pawns") # (1, "Rook") # (2, "Horse") # (3, "Bishops") # (4, "King") # (5, "Queen")
for i in enumerate(chessPieces, start=1):
    print(i)
## 输出结果
# (1, "Pawns") # (2, "Rook") # (3, "Horse") # (4, "Bishops") # (5, "King") # (6, "Queen")

2. zip函数

zip 函数可以将多个序列按顺序合并为一个元组,同时迭代每个序列的所有元素。

基本用法:zip(*iterable, strict=False)

listOfUsers = ['a', 'b', 'c']
listOfRoles = ['admin', 'user', 'user']
for user, role in zip(listOfUsers, listOfRoles):
    print(user, role) #输出结果: a admin # b user # c user
raw = zip(*zip(listOfUsers, listOfRoles)) # 反转
print(list(raw))  # [('a', 'b', 'c'), ('admin', 'user', 'user')]
# 长度不一致的情况
listOfUsers = ['a', 'b', 'c']
listOfRoles = ['admin', 'user']
for user, role in zip(listOfUsers, listOfRoles):
    print(user, role) # 输出结果:a admin # b user # c None

3. __import__动态导入

python动态加载模块的好处是可以在不同的模块之间共享模块代码,而不必每次都重新编译。
__import__ 函数可以实现动态加载模块,并且可以访问模块中的类、函数、变量等。

基本用法:__import__(name, globals=None, locals=None, fromlist=(), level=0)

# 方法一:
import test  # 加载模块
testModule = __import__("test", globals(), locals(), [], 0)  # 动态加载模块
# 方法二
import test.test_support  # 加载模块
testModule = __import__("test.test_support", globals(), locals(), [], 0)  # 动态加载模块
# 方法三
from test import support  # 加载模块
testModule = __import__("test", globals(), locals(), ["support"], 0)  # 动态加载模块

4. accumulate累加函数

accumulate 函数可以将一个序列中的元素累积起来,返回一个新的序列。这儿的累积不仅仅是指元素相加法,也可以是乘法,甚至是自定义的运算。仔细学习下面的例子,不管是工作中,还是学习中,或许你会用到这个函数。

基本用法: accumulate(iterable, func=operator.add, *, initial=None)

from itertools import accumulate
import operator


def op(x, y):
    return x + 3 * y


nums = [1, 2, 3, 4, 5]
print(list(accumulate(nums)))  # 默认加法累积:[1, 3, 6, 10, 15]
print(list(accumulate(nums, operator.mul)))  # 乘法累积:[1, 2, 6, 24, 120]
print(list(accumulate(nums, op)))  # 自定义累积:[1, 7, 16, 28, 43]
# ??initial参数需要 python>=3.8
print(list(accumulate(nums, op, initial=2)))  # 定义初始值

5. collections.namedtuple命名元组

namedtuple 函数可以将一个类似于元组的对象,转换为一个可以访问其元素的对象。
简单的说,给元组的每个值起个名字,然后可以通过名字访问。

基本用法:collections.namedtuple(typename, field_names, *, rename=False, defaults=None, module=None)

field_names 是一个字符串序列,例如 [‘a’,‘b’],也可以写成 [‘a b’]。

from collections import namedtuple
data = (1, True, 'red') # 元组
name = ('value', 'enable', 'color') # 元组名
tupleData = namedtuple('dataVEC', name) # 定义一个名为dataVEC的元组
test = tupleData(*data) # 将data转换为tuple类
print(test) # 输出:dataVEC(value=1, enable=True, color='red')
print(test.value) # 输出:1
print(test.enable) # 输出:True
print(test.color) # 输出:red

小节

今天我们介绍的五个函数,你觉得哪个最有用?

欢迎大家留言讨论,点赞、收藏,支持!

pythontip 出品,Happy Coding!

公众号: 夸克编程

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-01-11 23:57:04  更:2022-01-11 23:58:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:21:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码