Python 函数实战指南:提升编程效率的实用技巧

在 Python 编程的世界里,函数是构建高效代码的基石。掌握实用的函数技巧不仅能让代码更加简洁优雅,还能显著提升开发效率。我们一起将结合实际案例,深入剖析 Python 函数的使用技巧,帮助开发者在日常开发中事半功倍。

 

 

一、基础函数的进阶用法

 

1.  len()  函数的扩展应用

 

 len()  函数不仅可以获取列表、字符串的长度,在实际开发中,还可以用于判断数据是否为空。例如,在处理用户输入时,检查输入的字符串是否为空:

 

user_input = input("请输入内容:")

if len(user_input) == 0:

    print("输入不能为空!")

 

 

此外,在处理嵌套数据结构时, len()  函数也能派上用场。比如,计算二维列表中每行的元素个数:

 

matrix = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]

for row in matrix:

    print(len(row))

 

 

2.  sorted()  函数的复杂排序

 

 sorted()  函数通过  key  参数可以实现复杂的排序逻辑。在电商系统中,对商品列表按照价格和销量进行综合排序:

 

products = [

    {'name': 'Product A', 'price': 100,'sales': 10},

    {'name': 'Product B', 'price': 80,'sales': 15},

    {'name': 'Product C', 'price': 100,'sales': 20}

]

# 先按价格升序,价格相同再按销量降序

sorted_products = sorted(products, key=lambda x: (x['price'], -x['sales']))

print(sorted_products)

 

 

二、迭代相关函数的实战应用

 

1.  range()  函数与列表推导式结合

 

 range()  函数常与列表推导式结合,快速生成特定规律的列表。例如,生成 1 到 100 中所有偶数的平方:

 

even_squares = [x ** 2 for x in range(2, 101, 2)]

print(even_squares)

 

 

2.  enumerate()  函数在列表修改中的应用

 

在遍历列表并修改元素时, enumerate()  函数能方便地获取元素索引。例如,将列表中所有奇数加 1:

 

nums = [1, 2, 3, 4, 5]

for index, num in enumerate(nums):

    if num % 2 == 1:

        nums[index] = num + 1

print(nums)

 

 

3.  zip()  函数在数据合并中的应用

 

在处理多个相关数据列表时, zip()  函数可以将它们合并。例如,将学生姓名和成绩合并成字典:

 

names = ['Alice', 'Bob', 'Charlie']

scores = [85, 90, 78]

student_scores = dict(zip(names, scores))

print(student_scores)

 

 

三、高阶函数的实战技巧

 

1.  map()  函数批量数据处理

 

 map()  函数在数据清洗和转换中非常实用。例如,将列表中的字符串转换为整数:

 

str_nums = ['1', '2', '3', '4']

int_nums = list(map(int, str_nums))

print(int_nums)

 

 

在处理文件读取时, map()  函数可以快速处理每一行数据。比如,读取文件中的整数数据:

 

with open('data.txt', 'r') as file:

    data = list(map(int, file.readlines()))

print(data)

 

 

2.  filter()  函数数据筛选

 

在日志分析中, filter()  函数可以筛选出特定级别的日志。假设日志数据是一个字典列表,包含  level  和  message  字段:

 

logs = [

    {'level': 'info','message': '程序启动'},

    {'level': 'error','message': '数据库连接失败'},

    {'level': 'info','message': '数据加载完成'}

]

error_logs = list(filter(lambda x: x['level'] == 'error', logs))

print(error_logs)

 

 

3.  reduce()  函数累积计算

 

 reduce()  函数在计算累积结果时非常高效。例如,计算列表中所有元素的乘积:

 

from functools import reduce

nums = [1, 2, 3, 4, 5]

product = reduce(lambda x, y: x * y, nums)

print(product)

 

 

在字符串处理中, reduce()  函数可以将列表中的字符串合并:

 

words = ['Hello', 'world', '!']

sentence = reduce(lambda x, y: x + y, words)

print(sentence)

 

 

四、自定义函数的优化技巧

 

1. 默认参数的合理使用

 

在定义函数时,合理设置默认参数可以提高函数的灵活性。例如,定义一个计算圆面积的函数,默认半径为 1:

 

def circle_area(radius=1):

    return 3.14 * radius ** 2

print(circle_area())

print(circle_area(5))

 

 

2. 可变参数的应用

 

 *args  和  **kwargs  可以让函数接受任意数量的参数。例如,定义一个计算多个数总和的函数:

 

def sum_numbers(*args):

    return sum(args)

print(sum_numbers(1, 2, 3))

print(sum_numbers(10, 20, 30, 40))

 

 

3. 函数文档字符串的编写

 

编写清晰的函数文档字符串可以提高代码的可读性和可维护性。例如:

 

def add_numbers(a, b):

    """

    该函数用于计算两个数的和。

 

    :param a: 第一个数

    :param b: 第二个数

    :return: 两个数的和

    """

    return a + b

 

 

五、结掌握 Python 函数的实用技巧是提升编程效率的关键。通过合理运用基础函数、迭代函数、高阶函数以及优化自定义函数,开发者可以编写出更加简洁、高效的代码。在实际开发中,不断实践和总结这些技巧,将有助于我们更好地应对各种编程挑战,提高开发效率和代码质量。希望我们分享的技巧能够对大家的 Python 编程之路有所帮助。

 

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

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

相关文章

OPenCV CUDA模块图形变换----构建透视变换映射表函数buildWarpPerspectiveMaps()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该函数用于构建一个透视变换(Perspective Transform)的映射表(xmap / ymap),可用于后…

tcping工具使用指南

tcping是一个用于测试TCP端口连通性的工具,它类似于传统的ping命令,但工作在传输层(TCP)而不是网络层(ICMP)。 基本功能 tcping的主要功能包括: 测试目标主机特定TCP端口是否开放 测量TCP连接建立时间 统计丢包率和响应时间 安装方法 …

CSP 2024 入门级第一轮(88.5)

4. 以下哪个序列对应数字 00 至 88 的 44 位二进制格雷码(Gray code)?( ) A. 0000, 0001, 0011, 0010, 0110, 0111, 0101, 1000 B. 0000, 0001, 0011, 0010, 0110, 0111, 0100, 0101 C. 0000, 0001, 0011, 0010, …

三菱FX-5U系列入门到精通

第2章 中间继电器 继电器工作模式:线圈得电,常开触点闭合,常闭触点断开。总结:中间继电器线圈电压分为:24VDC 110VAC 220VAC 380VAC PLC控制柜中常用的是24VDC比较多,而动力电柜中或者控制风机水泵的电柜中220VAC比较多。大部分选择24VDC,然后用触点控制220或者380,说白…

简历模板1——王明 | 高级数据挖掘工程师 | 5年经验

王明 | 高级数据挖掘工程师 | 5年经验 📱 (86) 189-xxxx-xxxx | 📧 wangmingemail.com | 📍 深圳市 💻 GitHub | 👔 LinkedIn 💼 工作经历 ​科技前沿集团 | 高级数据挖掘工程师 📅 2021.06 …

【JVM】- 内存模式

Java内存模型:JMM(Java Memory Model),定义了一套在多线程环境下,读写共享数据(成员变量、数组)时,对数据的可见性,有序性和原子性的规则和保障。 原子性 问题分析 【问…

AQS独占模式——资源获取和释放源码分析

AQS资源获取(独占模式) Node节点类 static final class Node {//标记当前节点的线程在共享模式下等待。static final Node SHARED new Node();//标记当前节点的线程在独占模式下等待。static final Node EXCLUSIVE null;//waitStatus的值&#xff0c…

压测过程中TPS上不去可能是什么原因

进行性能分析 接口没有报错或者错误率低于1%,继续增加并发还是一样,这个时候需要考虑几点 1.是否触发限流,比如waf、Nginx等情况,有没有一些限流的情况,如果触发了限流,请求是没有达到后端的,所…

Golang 解大整数乘法

文章目录 Golang 解大整数乘法问题描述:LeetCode 43. 字符串相乘思路Golang 代码 Golang 解大整数乘法 在初学 C 语言的时候,我们一定接触过“字符串相加”或“字符串相乘”之类的问题,对于初学者而言,这类问题的难度一般来说是比…

web3-区块链的技术安全/经济安全以及去杠杆螺旋(经济稳定)

web3-区块链的技术安全/经济安全以及去杠杆螺旋(经济稳定) 三个基本设计问题 技术安全 在技术结构中对其进行原子级的、瞬时利用(无风险) 无风险,因为攻击者的结果还是二进制的: 只会是攻击成功 获利或…

Java多线程通信:wait/notify与sleep的深度剖析(时序图详解)

在Java多线程编程中,线程间的通信与协作是实现复杂并发逻辑的关键。wait()、notify()以及sleep()方法作为线程控制的重要工具,有着各自独特的使用场景与规则。本文将深入探讨wait()和notify()的协作机制,以及sleep()的阻塞特性,同…

关于使用EasyExcel、 Vue3实现导入导出功能

后端部分: 其中查询数据的服务省略 1、引用 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.3</version></dependency> 2、controller package com.rs.cphs.sys.controller;i…

机器学习中的数据准备关键技术

有效的数据准备对于构建强大的机器学习模型至关重要。本文档总结并阐述了为监督和非监督学习任务准备数据的关键技术。 1. 理解数据类型 有两种数据类型。定性数据描述对象的特征&#xff0c;而定量数据描述对象的数量。 定性&#xff08;分类&#xff09;数据 名义&#x…

深度学习——基于卷积神经网络实现食物图像分类【3】(保存最优模型)

文章目录 引言一、项目概述二、环境配置三、数据预处理3.1 数据转换设置3.2 数据集准备 四、自定义数据集类五、CNN模型架构六、训练与评估流程6.1 训练函数6.2 评估与模型保存 七、完整训练流程八、模型保存与加载8.1 保存模型8.2 加载模型 九、优化建议十、常见问题解决十一、…

《棒球百科》棒球怎么玩·棒球9号位

用最简单的方式介绍棒球的核心玩法和规则&#xff0c;完全零基础也能看懂&#xff1a; 一句话目标 进攻方&#xff1a;用球棒把球打飞&#xff0c;然后拼命跑完4个垒包&#xff08;逆时针绕一圈&#xff09;得分。 防守方&#xff1a;想尽办法让进攻方出局&#xff0c;阻止他…

语言模型是怎么工作的?通俗版原理解读!

大模型为什么能聊天、写代码、懂医学&#xff1f; 我们从四个关键模块&#xff0c;一步步拆开讲清楚 &#x1f447; ✅ 模块一&#xff1a;模型的“本事”从哪来&#xff1f;靠训练数据 别幻想它有意识&#xff0c;它的能力&#xff0c;全是“喂”出来的&#xff1a; 吃过成千…

nrf52811墨水屏edp_service.c文件学习

on_connect函数 /**brief Function for handling the ref BLE_GAP_EVT_CONNECTED event from the S110 SoftDevice.** param[in] p_epd EPD Service structure.* param[in] p_ble_evt Pointer to the event received from BLE stack.*/ static void on_connect(ble_epd_t …

Nginx-2 详解处理 Http 请求

Nginx-2 详解处理 Http 请求 Nginx 作为当今最流行的开源 Web 服务器之一&#xff0c;以其高性能、高稳定性和丰富的功能而闻名。在处理 HTTP请求 的过程中&#xff0c;Nginx 采用了模块化的设计&#xff0c;将整个请求处理流程划分为若干个阶段&#xff0c;每个阶段都可以由特…

40-Oracle 23 ai Bigfile~Smallfile-Basicfile~Securefile矩阵对比

小伙伴们是不是在文件选择上还默认给建文件4G/个么&#xff0c;在oracle每个版本上系统默认属性是什么&#xff0c;选择困难症了没&#xff0c;一起一次性文件存储和默认属性看透。 基于Oracle历代在存储架构的技术演进分析&#xff0c;结合版本升级和23ai新特性&#xff0c;一…

【一】零基础--分层强化学习概览

分层强化学习&#xff08;Hierarchical Reinforcement Learning, HRL&#xff09;最早一般视为1993 年封建强化学习的提出. 一、HL的基础理论 1.1 MDP MDP&#xff08;马尔可夫决策过程&#xff09;&#xff1a;MDP是一种用于建模序列决策问题的框架&#xff0c;包含状态&am…