Python基础学习之常见的内建函数整理

发布时间 - 2026-01-11 03:08:11    点击率:

 前言

Python针对众多的类型,提供了众多的内建函数来处理,这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作,下面话不多说了,来一看看详细的介绍吧。

map()

map()函数接受两个参数,一个是函数,一个是可迭代对象(Iterable),map将传入的函数依次作用到可迭代对象的每一个元素,并把结果作为迭代器(Iterator)返回。

举例说明,有一个函数f(x)=x^2 ,要把这个函数作用到一个list[1,2,3,4,5,6,7,8,9]上:

运用简单的循环可以实现:

>>> def f(x):
...  return x * x
...
L = []
for n in [1, 2, 3, 4, 5, 6, 7, 8, 9]:
 L.append(f(n))
print(L)

运用高阶函数map()

>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> list(r)
[1, 4, 9, 16, 25, 36, 49, 64, 81]

结果r是一个迭代器,迭代器是惰性序列,通过list()函数让它把整个序列都计算出来并返回一个list。

如果要把这个list所有数字转为字符串利用map()就简单了:

>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
['1', '2', '3', '4', '5', '6', '7', '8', '9']

小练习:利用map()函数,把用户输入的不规范的英文名字变为首字母大写其他小写的规范名字。输入['adam', 'LISA', 'barT'],输出['Adam', 'Lisa', 'Bart']

def normalize(name):
  return name.capitalize()

 l1=["adam","LISA","barT"]
 l2=list(map(normalize,l1))
 print(l2)

reduce()

reduce()函数也是接受两个参数,一个是函数,一个是可迭代对象,reduce将传入的函数作用到可迭代对象的每个元素的结果做累计计算。然后将最终结果返回。

效果就是:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

举例说明,将序列[1,2,3,4,5]变换成整数12345:

>>> from functools import reduce
>>> def fn(x, y):
...  return x * 10 + y
...
>>> reduce(fn, [1, 2, 3, 4, 5])
12345

小练习:编写一个prod()函数,可以接受一个list并利用reduce求积:

from functools import reduce
def pro (x,y):
  return x * y
 def prod(L):
  return reduce(pro,L)
 print(prod([1,3,5,7]))

map()reduce()综合练习:编写str2float函数,把字符串'123.456'转换成浮点型123.456

CHAR_TO_FLOAT = {
 '0': 0,'1': 1,'2': 2,'3': 3,'4': 4,'5': 5,'6': 6,'7': 7,'8': 8,'9': 9, '.': -1
}
def str2float(s):
 nums = map(lambda ch:CHAR_TO_FLOAT[ch],s)
 point = 0
 def to_float(f,n):
   nonlocal point
   if n==-1:
    point =1
    return f
   if point ==0:
    return f*10+n
   else:
    point =point *10
    return f + n/point

 return reduce(to_float,nums,0)#第三个参数0是初始值,对应to_float中f

filter()

filter()函数用于过滤序列,filter()也接受一个函数和一个序列,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

举例说明,删除list中的偶数:

def is_odd(n):
 return n % 2 == 1

list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 结果: [1, 5, 9, 15]

小练习:用filter()求素数

计算素数的一个方法是埃氏筛法,它的算法理解起来非常简单:

首先,列出从2开始的所有自然数,构造一个序列:

2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...

取序列的第一个数2,它一定是素数,然后用2把序列的2的倍数筛掉:

3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...

取新序列的第一个数3,它一定是素数,然后用3把序列的3的倍数筛掉:

5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...

取新序列的第一个数5,然后用5把序列的5的倍数筛掉:

7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...

不断筛下去,就可以得到所有的素数。

用Python实现这个算法,先构造一个从3开始的期数数列:

def _odd_iter(): 
n = 1
 while True:
  n = n + 2
  yield n
#这是一个生成器,并且是一个无线序列

定义一个筛选函数:

def _not_divisible(n):
 return lambda x: x % n > 0

定义一个生成器不断返回下一个素数:

def primes():
 yield 2
 it = _odd_iter() # 初始序列
 while True:
  n = next(it) # 返回序列的第一个数
  yield n
  it = filter(_not_divisible(n), it) # 构造新序列

打印100以内素数:

for n in primes():
 if n < 100:
  print(n)
 else:
  break

sorted()

python内置的sorted()函数可以对list进行排序:

>>> sorted([36, 5, -12, 9, -21])
[-21, -12, 5, 9, 36]

sorted()函数也是一个高阶函数,还可以接受一个key函数来实现自定义排序:

>>> sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]

key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序.

默认情况下,对字符串排序,是按照ASCII的大小比较的,由于'Z' < 'a',结果,大写字母Z会排在小写字母a的前面。如果想忽略大小写可都转换成小写来比较:

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)
['about', 'bob', 'Credit', 'Zoo']

要进行反向排序,不必改动key函数,可以传入第三个参数reverse=True

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)
['Zoo', 'Credit', 'bob', 'about']

小练习:假设我们用一组tuple表示学生名字和成绩:L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)] 。用sorted()对上述列表分别按c成绩从高到低排序:

L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def by_score(t):
 for i in t:
   return t[1]
L2=sorted(L,key= by_score)
print(L2)

运用匿名函数更简洁:

L2=sorted(L,key=lambda t:t[1])
print(L2)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# python的内建函数  # python中的内建函数  # python内建函数大全  # python中的reduce内建函数使用方法指南  # Python中内建函数的简单用法说明  # Python中集合的内建函数和内建方法学习教程  # 详解Python中映射类型的内建函数和工厂函数  # Python列表list内建函数用法实例分析【insert、remove、index、pop等】  # Python随手笔记之标准类型内建函数  # 对Python 内建函数和保留字详解  # Python内建函数之raw_input()与input()代码解析  # Python列表list常用内建函数实例小结  # 一篇文章弄懂Python中的内建函数  # 迭代  # 是一个  # 举例说明  # 要把  # 第三个  # 转换成  # 内建  # 高阶  # 作用于  # 还可以  # 浮点  # 说了  # 不多  # 这是一个  # 自定义  # 可以实现  # 这篇文章  # 谢谢大家  # 排在  # 来实现 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 详解Oracle修改字段类型方法总结  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  Laravel如何创建自定义Facades?(详细步骤)  实现点击下箭头变上箭头来回切换的两种方法【推荐】  Laravel如何实现模型的全局作用域?(Global Scope示例)  香港服务器WordPress建站指南:SEO优化与高效部署策略  ,网页ppt怎么弄成自己的ppt?  微信小程序 配置文件详细介绍  Laravel如何实现文件上传和存储?(本地与S3配置)  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  EditPlus中的正则表达式 实战(4)  Laravel怎么调用外部API_Laravel Http Client客户端使用  如何快速建站并高效导出源代码?  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  Android 常见的图片加载框架详细介绍  如何生成腾讯云建站专用兑换码?  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  在centOS 7安装mysql 5.7的详细教程  java中使用zxing批量生成二维码立牌  中山网站推广排名,中山信息港登录入口?  Swift开发中switch语句值绑定模式  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Java遍历集合的三种方式  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  Python文本处理实践_日志清洗解析【指导】  如何挑选高效建站主机与优质域名?  Laravel定时任务怎么设置_Laravel Crontab调度器配置  Android使用GridView实现日历的简单功能  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  详解CentOS6.5 安装 MySQL5.1.71的方法  微信推文制作网站有哪些,怎么做微信推文,急?  如何快速上传建站程序避免常见错误?  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  大学网站设计制作软件有哪些,如何将网站制作成自己app?  Bootstrap CSS布局之列表  如何在宝塔面板中创建新站点?  Laravel怎么判断请求类型_Laravel Request isMethod用法  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  如何在云主机快速搭建网站站点?  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  微信小程序 scroll-view组件实现列表页实例代码  如何用免费手机建站系统零基础打造专业网站?  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】