Day 10 python学习笔记

高阶函数


map( )

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

再简单点说:从可迭代对象中取出第一个值,作为参数传递给x,执行函数体,作为生成对象中第一个数据,之后再第二个、第三个。。。

map():最终返回一个可迭代对象(可迭代对象不是列表)

可迭代对象:可以通过for循环迭代出来的

例:

>>> def f(x):
... return x * x
...
>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])   
>>> list(r)    #相当于list([...]) ===>print(list([...]))
[1, 4, 9, 16, 25, 36, 49, 64, 81]

map(函数本身,数据):由于结果r是Iterator惰性序列(仅仅在迭代至某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。),所以用list()函数让把整个序列都计算出来并返回一个list

或者例二:

a = map(lambda x : x*x,[1,2,3,4])
print(a)    #打印map()的返回
for i in a:   #for遍历可迭代对象
    print(i)



结果:
<map object at 0x000001EA7316BEB0>   #可迭代对象的地址
1
4
9
16

扩展例三:

b = map(lambda x,y:x+y,[1,2,3,4],[5,6,7,8])
for i in b:
    print(i)

b = map(lambda x,y:x+y,[1,2,3,4],(5,6,7,8))  #证明元组也可以
for i in b:
    print(i)

b = map(lambda x,y:x+y,(1,2,3,4),(5,6,7,8))  #元组也属于可迭代对象
for i in b:
    print(i)

#依次传入x = 1,y = 5,x+y=6   x = 2,y = 6,x+y=8

结果:
6
8
10
12
6
8
10
12
6
8
10
12
# map(将来可以被调用的,可迭代数据)

事实上它把运算规则抽象了
map()可以计算复杂的函数

例:
#将所有list里边的元素转换为字符
print(list(map(str,[1,2,3,4,5])))


结果:
['1', '2', '3', '4', '5']

filter( )

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

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

list(filter(is_odd,[1,2,3,4,5,6]))


结果:
>>>1,3,5

或者:

a = filter(lambda x: x % 2, [1, 2, 3, 4])
for i in a:
    print(i)


结果;
1
3

reduce( )

reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算

即:以上一次执行的结果座位下一次x的值传入,如果指定了额外值,则第一次会将额外值作为x传入

注:使用前必须导入 from functools import reduce,因为方法是在这个模块里的

例:
from functools import reduce

a = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])
print(a)

#计算过程:x = 1, y = 2,x+y = 3(将这个3传入下一个x)
#     即:x = 3, y = 3(列表里的3),x+y = 6(将这个6传入下一个x)
#     即:x = 6, y = 4(列表里的4),x+y = 10(将这个10传入下一个x)
#...


b = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5], 6)
print(b)
#计算过程:x = 6(额外值先传入), y = 1,x+y = 7(将这个7传入下一个x)
#     即:x = 7, y = 2(列表里的2),x+y = 9(将这个9传入下一个x)
#     即:x = 9, y = 3(列表里的3),x+y = 12(将这个12传入下一个x)
#...



结果:
15
21

 即:

from functools import reduce
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
>>> from functools import reduce
>>> def add(x, y):
... return x + y
...
>>> reduce(add, [1, 3, 5, 7, 9])
25

模块

模块:

一般而言,在python中,xxxx.py文件就是一个模块

一个模块一般只用来存贮和管理一类功能的一个文件

包:文件夹,用来管理和存放模块的,将功能相关的模块放在一个文件夹
注意:普通文件夹可以称为一个包,但是真正的包,存在__init__.py文件

导包

导包方法:

  1. import model_name(包名)
  2. import model_name(包名) as  别名(自己起)
  3. import model_name(包名) import   方法(前面那个包里的方法)
  4. from model_name(包名) import  *

举例1:

import random  #导入random包

a =random.random()   #作用:获取一个[0-1)的随机数
print(a)


结果:
0.08402123649462256

举例2:

import random as r

# random.random()   #嫌每次使用random太麻烦,使用别名
a = r.random()
print(a)


结果:
0.6053232042710952

举例3:

from random import random   #只能使用random包里的random方法
a = r.random()
print(a)


结果:
0.1067221247244563

举例4:

from random import *   #可以使用random包里所有方法
a = random()           #并且调用不需要加包名,直接写方法
print(a)


结果:
0.8487887772496069

from model_name(包名) import  *  的缺点

  1. 导的包太多,浪费资源
  2. 如果包里没有__init__  与 __all__,就无法成功导入

扩展:

如何查看包里面内容?

按住ctrl并且点击包名

如下图:

进入后会另打一个xxx.py文件

里面会有__init__  与 __all__

__all__就是为了让你 * 出所有方法

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode讲解篇之面试题 01.08. 零矩阵

文章目录 题目描述题解思路题解代码 题目描述 题解思路 遍历矩阵&#xff0c;若当前元素为零&#xff0c;则将该行和该列的第一个元素置零 遍历第一行&#xff0c;若当前元素为零&#xff0c;则将当前列置零 遍历第一列&#xff0c;若当前元素为零&#xff0c;则将当前行置零 …

整理指定文件夹下的所有文件,以类树状图显示并生成对应超链接

最近在整理家里学习资料的时候&#xff0c;由于年代久远&#xff0c;找不到我想要找的文件&#xff0c;windows文件搜索速度感觉太慢。于是想要生成一份类似文件索引的东西来显示所有资料&#xff0c;让我可以快速的找到需要的资料路径 直接上代码 import os import datetim…

73 应急响应-WEB分析phpjavaweb自动化工具

目录 应急响应&#xff1a;必备知识点&#xff1a;准备工作&#xff1a;有明确信息网站被入侵&#xff1a;无明确信息网站被入侵&#xff1a;常见分析方法&#xff1a; 演示案例&#xff1a;WindowsIISSql-日志&#xff0c;搜索LinuxBT_Nginxtp5-日志,后门360星图日志自动分析工…

Sui提供dApp Kit 助力快速构建React Apps和dApps

近日&#xff0c;Mysten Labs推出了dApp Kit&#xff0c;这是一个全新的解决方案&#xff0c;可用于在Sui上开发React应用程序和去中心化应用程序&#xff08;dApps&#xff09;。mysten/dapp-kit是专门为React定制的全新SDK&#xff0c;旨在简化诸如连接钱包、签署交易和从RPC…

PyTorch 与 TensorFlow:机器学习框架之战

深度学习框架是简化人工神经网络 (ANN) 开发的重要工具&#xff0c;并且其发展非常迅速。其中&#xff0c;TensorFlow 和 PyTorch 脱颖而出&#xff0c;各自在不同的机器学习领域占有一席之地。但如何为特定项目确定理想的工具呢&#xff1f;本综合指南[1]旨在阐明它们的优点和…

报错:Could not resolve host: mirrorlist.centos.org;Unknown error

报错&#xff1a;Could not resolve host: mirrorlist.centos.org;Unknown error 一般是因为网络配置错误导致无法连接外网&#xff0c;我们先尝试ping一下www.baidu.com发现无法ping通。 果然&#xff0c;接下来我们就开始排查吧&#xff01;&#xff01; 1.网络配置查看 打开…

SpringBoot 源码分析(四) 内置Tomcat分析

一、Tomcat相关知识 1. tomcat目录结构 Tomcat文件的目录结构 2.启动流程 启动一个Tomcat服务是执行的bin目录下的脚本程序&#xff0c;startup.bat和 startup.sh.一个是windows的脚本&#xff0c;一个是Linux下的脚本&#xff0c;同样还可以看到两个停止的脚本 shutdown.ba…

64从零开始学Java之关于日期时间的新特性

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在上一篇文章中&#xff0c;壹哥给大家讲解了Java里的格式化问题&#xff0c;这样我们就可以个性化设…

网络套接字编程

1.基础预备知识 1.1源ip和目的ip 在IP数据包头部中, 有两个IP地址, 分别叫做源IP地址, 和目的IP地址 源IP地址表示发起通信的设备的IP地址。它是数据包的出发点&#xff0c;标识了数据包的来源。当一个设备发送数据包到网络上的其他设备时&#xff0c;该数据包的源IP字段会被…

WSL2的安装与配置(创建Anaconda虚拟环境、更新软件包、安装PyTorch、VSCode)

1. WSL2 安装 以管理员身份打开 PowerShell&#xff08;“开始”菜单 >“PowerShell” >单击右键 >“以管理员身份运行”&#xff09;&#xff0c;然后输入以下命令&#xff1a; dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /a…

Maven学习

Maven介绍 Maven是Apache的一个开源项目&#xff0c;主要服务于基于Java平台的项目构建&#xff0c;依赖管理和项目信息管理。 Maven可以让团队能够更科学的构建项目&#xff0c;我们可以用配置文件的方式&#xff0c;对项目的名称、描述、项目版本号、项目依赖等信息进行描述…

中文编程开发语言编程实际案例:程序控制灯电路以及桌球台球室用这个程序计时计费

中文编程开发语言编程实际案例&#xff1a;程序控制灯电路以及桌球台球室用这个程序计时计费 上图为&#xff1a;程序控制的硬件设备电路图 上图为&#xff1a;程序控制灯的开关软件截图&#xff0c;适用范围比如&#xff1a;台球厅桌球室的计时计费管理&#xff0c;计时的时候…

RedHat8升级GLIBC_2.29,解决ImportError: /lib64/libm.so.6: version `GLIBC_2.29

问题背景 在做大模型微调训练时&#xff0c;执行python脚本时出现如下报错&#xff1a; 查看当前服务器版本&#xff0c;确实没有GLIBC_2.29的 strings /lib64/libm.so.6 | grep GLIBC_ GLIBC_2.2.5 GLIBC_2.4 GLIBC_2.15 GLIBC_2.18 GLIBC_2.23 GLIBC_2.24 GLIBC_2.25 GLIB…

MySQL的优化利器:索引条件下推,千万数据下性能提升273%

MySQL的优化利器&#xff1a;索引条件下推&#xff0c;千万数据下性能提升273%&#x1f680; 前言 上个阶段&#xff0c;我们聊过MySQL中字段类型的选择&#xff0c;感叹不同类型在千万数据下的性能差异 时间类型&#xff1a;MySQL字段的时间类型该如何选择&#xff1f;千万…

[Go版]算法通关村第十八关青铜——透析回溯的模版

目录 认识回溯思想回溯的代码框架从 N 叉树说起有的问题暴力搜索也不行回溯 递归 局部枚举 放下前任Go代码【LeetCode-77. 组合】回溯热身-再论二叉树的路径问题题目&#xff1a;二叉树的所有路径Go 代码 题目&#xff1a;路径总和 IIGo 代码 回溯是最重要的算法思想之一&am…

【Jenkins 安装】

一&#xff1a;安装文件夹准备 在/home/admin 界面下新建三个文件夹&#xff0c;用来安装tomcat、maven 1.打开&#xff0c;/home/admin目录 cd /home/admin 2.新建三个文件夹 mkdir tomcat mkdir maven 二&#xff1a;安装tomcat 1.打开tomcat目录进行tomcat的安装 访问:h…

LSKA(大可分离核注意力):重新思考CNN大核注意力设计

文章目录 摘要1、简介2、相关工作3、方法4、实验5、消融研究6、与最先进方法的比较7、ViTs和CNNs的鲁棒性评估基准比较8、结论 摘要 https://arxiv.org/pdf/2309.01439.pdf 大型可分离核注意力&#xff08;LSKA&#xff09;模块的视觉注意力网络&#xff08;VAN&#xff09;已…

SpringDoc API文档工具集成SpringBoot - Swagger3

1、引言 之前在Spring Boot项目中一直使用的是SpringFox提供的Swagger库&#xff0c;发现已经超过3年没出新版本了&#xff01;SpringDoc是一款可以结合Spring Boot使用的API文档生成工具&#xff0c;基于OpenAPI 3&#xff0c;是一款更好用的Swagger库&#xff01;值得一提的是…

高速下载b站视频的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

JAVA 链式编程和建造者模式的使用(lombok的使用)

0.说明 0.1 链式编程 链式编程的原理是返回一个this对象&#xff0c;也就是返回对象本身&#xff0c;从而达到链式效果。这样可以减少一些代码量&#xff0c;是java8新增的内容。 此处主要介绍在新建对象使用链式编程更加方便的创建对象。链式编程的一些常见用法可以看这个&a…