首页 > 编程语言 >【Python中的内置函数】max、map、zip等函数的实用技巧!

【Python中的内置函数】max、map、zip等函数的实用技巧!

时间:2024-10-25 20:17:46浏览次数:9  
标签:map zip 函数 迭代 max numbers print

Python中的内置函数:max、map、zip等函数的实用技巧

Python 提供了丰富的内置函数,帮助开发者高效编写简洁的代码。在这篇文章中,我们将详细探讨几个常用的内置函数,如 maxmapzip,并展示如何在实际项目中灵活运用这些函数。本篇将结合代码示例,深入探讨它们的使用技巧,帮助你更好地掌握 Python 中这些强大的工具。

目录

  1. Python 内置函数概述
  2. max() 函数的使用技巧
  3. map() 函数的强大功能
  4. zip() 函数实现并行迭代
  5. filter() 函数筛选数据
  6. sorted() 函数的多样排序
  7. all()any() 判断逻辑表达式
  8. len() 获取对象长度
  9. enumerate() 为可迭代对象添加计数
  10. sum() 函数的高效求和

1. Python 内置函数概述

Python 的内置函数是直接由 Python 解释器提供的、无需导入模块的函数。这些函数可以处理不同类型的数据结构,如列表、元组、字典、字符串等。熟练使用内置函数可以显著提高代码效率,并且减少冗余。

接下来,我们将通过具体实例来详细探讨一些常用的内置函数的高级用法。

2. max() 函数的使用技巧

max() 函数用于获取可迭代对象中的最大值,它不仅可以在数字中使用,还可以在字符串、列表等多种数据类型上工作。

基本用法:

numbers = [3, 6, 2, 8, 4]
print(max(numbers))  # 输出:8

高级技巧:通过key参数实现自定义规则

max() 函数的强大之处在于它可以通过 key 参数实现复杂的比较规则。例如,我们可以使用它来比较包含多个属性的对象,或者根据字符串的长度来选择最长的字符串。

words = ["apple", "banana", "cherry", "date"]
print(max(words, key=len))  # 输出:banana(根据字符串长度选择最长的)
students = [
    {'name': 'Alice', 'score': 85},
    {'name': 'Bob', 'score': 91},
    {'name': 'Charlie', 'score': 88}
]

top_student = max(students, key=lambda x: x['score'])
print(top_student)  # 输出:{'name': 'Bob', 'score': 91}

在这个例子中,我们使用 lambda 函数根据每个学生的成绩来确定最高分的学生。

3. map() 函数的强大功能

map() 函数将一个函数应用于一个或多个可迭代对象(如列表、元组),并返回一个 map 对象(可以转化为列表或其他类型)。这可以用于将复杂的逻辑应用于整个数据集,而无需手动迭代。

基本用法:

numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x ** 2, numbers))
print(squared)  # 输出:[1, 4, 9, 16]

高级技巧:同时处理多个列表

map() 函数还可以处理多个输入列表,并将相应元素传递给指定的函数。

list1 = [1, 2, 3]
list2 = [4, 5, 6]
result = list(map(lambda x, y: x + y, list1, list2))
print(result)  # 输出:[5, 7, 9]

这里,我们将 list1list2 中的对应元素相加。

4. zip() 函数实现并行迭代

zip() 函数用于将多个可迭代对象“压缩”成一个元组的迭代器。它可以方便地用于多个列表的并行迭代,尤其是在需要同时处理多个数据集合时非常实用。

基本用法:

names = ['Alice', 'Bob', 'Charlie']
scores = [85, 91, 88]

for name, score in zip(names, scores):
    print(f'{name} scored {score}')

高级技巧:解压数据

除了“压缩”数据,zip() 还可以用于“解压”数据,方便地将多个元组列表拆分为各自的元素列表。

zipped = [('Alice', 85), ('Bob', 91), ('Charlie', 88)]
names, scores = zip(*zipped)
print(names)   # 输出:('Alice', 'Bob', 'Charlie')
print(scores)  # 输出:(85, 91, 88)

5. filter() 函数筛选数据

filter() 函数用于根据条件过滤可迭代对象中的元素。它返回一个过滤后的迭代器,包含所有满足条件的元素。

基本用法:

numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 输出:[2, 4, 6]

高级技巧:配合 None 使用

filter() 函数的条件为 None 时,它会过滤掉所有假值(如 0、空字符串、None 等)。

values = [0, 1, False, 2, '', 3, None]
filtered_values = list(filter(None, values))
print(filtered_values)  # 输出:[1, 2, 3]

6. sorted() 函数的多样排序

sorted() 函数用于对可迭代对象进行排序。它可以根据不同的规则对数据进行排序,默认情况下,sorted() 函数按升序排序。

基本用法:

numbers = [3, 1, 4, 2]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 输出:[1, 2, 3, 4]

高级技巧:通过key参数自定义排序规则

max() 函数类似,sorted() 也支持 key 参数,用于指定自定义排序规则。

words = ["apple", "banana", "cherry", "date"]
sorted_words = sorted(words, key=len)
print(sorted_words)  # 输出:['date', 'apple', 'cherry', 'banana']

7. all()any() 判断逻辑表达式

all()any() 是两个逻辑判断函数。all() 返回 True,当所有元素都为真值时;any() 则在任意元素为真时返回 True

基本用法:

numbers = [2, 4, 6, 8]
print(all(x % 2 == 0 for x in numbers))  # 输出:True
print(any(x > 5 for x in numbers))       # 输出:True

all()any() 常用于判断集合中的元素是否符合某些条件。

8. len() 获取对象长度

len() 是 Python 中最常用的函数之一,它用于获取任何可迭代对象(如列表、字符串、字典等)的长度。

基本用法:

words = ['apple', 'banana', 'cherry']
print(len(words))  # 输出:3

len() 是 O(1) 时间复杂度的操作,适用于快速获取列表、字典等数据结构的大小。

9. enumerate() 为可迭代对象添加计数

enumerate() 函数用于在迭代时为可迭代对象中的每个元素添加一个计数器,非常适合需要获取索引和元素同时处理的场景。

基本用法:

words = ['apple', 'banana', 'cherry']
for index, word in enumerate(words, start=1):
    print(f'{index}: {word}')

高级技巧:从特定的数字开始计数

enumerate() 默认从 0 开始计数,但可以通过 start 参数自定义起始数字。

for index, word in enumerate(words, start=100):
    print(f'{index}: {word}')

10. sum() 函数的高效求和

sum() 函数用于对数值类型的可迭代对象进行求和,是计算总和的简便方法。

基本用法:

numbers = [1, 2, 3, 4]
total = sum(numbers)
print(total)  # 输出:10

高级技巧:结合 map() 使用

sum() 还可以结合其他内置函数使用,如 map(),来快速实现更加复杂的求和逻辑。

numbers = ['1', '2', '3']
total = sum(map(int, numbers))  # 将字符串转为整数再求和
print(total)  # 输出:6

总结

通过深入探讨 Python 中的 max()map()zip() 等内置函数的使用技巧,我们可以看到这些函数极大地提高了代码的简洁性和可读性。这些函数不仅适用于常见的基本操作,还能够通过参数的灵活运用实现复杂的功能。

掌握这些内置函数,能让你在日常编码中更加高效,编写出更具 Pythonic 风格的代码。

标签:map,zip,函数,迭代,max,numbers,print
From: https://blog.csdn.net/liaoqingjian/article/details/143211284

相关文章

  • python将输入的一个正整数分解质因数(map)
    利用map函数#coding=utf-8#输入一个正整数x=int(input())#请在此添加代码,将输入的一个正整数分解质因数##########Begin##########N=xn=xk=2result=[]while(k<=x):#初值k为2,x为输入的数字,在程序执行的过程中k渐渐变大(k++),x渐渐变小(x/k)if(k==x......
  • 如何在Swoole中使用协程实现高并发的swoole_smtp函数
    ​使用Swoole的协程功能可以高效地处理大量的并发请求。本文详细介绍如何在Swoole中通过协程实现高并发的swoole_smtp函数。我们将依次探讨:1.什么是Swoole和协程;2.swoole_smtp函数的基础知识;3.协程如何增强swoole_smtp的并发性能;4.具体的实现步骤;5.实践中的注意事项。1.什么是S......
  • 没错,Go 语言的函数参数没有引用传递方式
    这篇文章想浅浅地讲解Go语言函数参数传递的值拷贝。一句话观点Go语言中所有传递都是值传递,严格来说并不存在引用传递的概念。传递指针只是传递指针的值,并不是引用传递,只不过通过指针可以间接修改变量的值,从而达到类似引用传递的效果。值传递值传递就是将参数的副本传递给函......
  • 《php经典实例》6 第六章 函数
    5创建可以接受个数可变的参数的函数5.1func_num_args的使用返回参数的个数functionmean_num(){$sum=0;$size=func_num_args();for($i=0;$i<$size;$i++){$sum+=func_get_arg($i);}$average=$sum/$size;$average......
  • 为什么HashMap是线程不安全的
    HashMap是线程不安全的数据结构,主要原因是它的操作不是原子性的,导致在多线程环境下可能出现竞态条件。竞态条件是指多个线程以不正确的顺序访问共享资源,导致结果的不确定性和不一致性。同时对HashMap进行修改时,可能导致数据损坏和不一致。为了解决这个问题,可以使用线程安全的替代......
  • Day 12 闭包函数 + 装饰器 (如懂*-*)
    目录0昨日复习0.1函数对象0.1.1引用0.1.2当作函数的返回值0.1.3当作函数的参数0.1.4当作容器的元素0.2函数的嵌套0.3空间名称与作用域1闭包函数1.1何为闭包?1.2代码展示(这就是闭包!)1.3闭包的应用2装饰器2.1装饰器是什么?2.2为什么要用装饰器?(如懂,2.3怎么用装饰器?2.3.1......
  • 08-宽字节注入、GetShell、SQLMap、XSS存储型练习
    1、利用宽字节注入实现“库名-表名”的注入过程,写清楚注入步骤;​ 由于网站的过滤,调用其addslashes()函数在单引号之前添加反斜线\进行转义,我们需要让\无效实现单引号的逃逸。​ 解决方法:因为addslashes()函数使用时会对输入内容进行URL编码(即添加的\也会编码成%5c)在......
  • 其实在构建神经网络或训练神经网络的时候,还有另一个隐藏的前提假设,那就是当你选择sigm
    最大熵原理确实与选择激活函数(如sigmoid或softmax)有关。以下是一些相关的要点:最大熵原理:最大熵原理是一种统计推断的方法,旨在在已知信息的情况下,选择最不偏见的概率分布。换句话说,当我们对某个系统的知识有限时,选择熵最大的分布可以避免引入不必要的假设。激活函数与概率分......
  • 似然值最大的那个模型与目标最接近,这个前提假设和softmax选择以e为底这种做基本元素去
    似然值最大的模型与目标的接近性以及选择以e为底的指数函数构造Softmax函数之间有着密切的联系,主要体现在以下几个方面:1.似然函数与概率分布在统计建模中,最大似然估计(MLE)旨在寻找能够最优地解释观察数据的模型。通过最大化似然函数,我们实际上是在寻找一个概率分布,使得在给......
  • linkedhashmap和hashmap区别
    LinkedHashMap和HashMap是Java中用于存储键值对的数据结构,它们之间的主要区别在于对键值对的顺序管理和性能特征。LinkedHashMap保留了键值对的插入顺序,而HashMap则不保证顺序。LinkedHashMap的性能在某些情况下可能略低于HashMap,但在需要有序遍历键值对的情况下,它是更好的选择......