让python飞:形象理解python 栈、队列、lambda、生成器、迭代器、模块

这篇博客介绍了Python中的迭代器和生成器概念,通过棒球和球棒的故事展示了如何使用deque()函数创建队列,以及如何利用lambda函数创建匿名函数。还探讨了如何将可迭代对象转化为迭代器,以及使用next()函数获取生成器内容。此外,文章还讲解了Python模块的管理和导入机制,包括标准库、自定义模块和第三方模块的使用,以及如何通过pip进行安装和管理。
摘要由CSDN通过智能技术生成

在这里插入图片描述

Day10 棒球和球棒与水晶火炉和五彩宝箱
棒球和球棒来到了足球场,要打棒球!但是球场工作人员不同意。棒球和球棒表示不服。球场工作人员说,这样吧,你按我们的规则完成任务,我们就让你们在这里玩。这里有两个长筒,一个竖桶
栈:满足特点 ---> 先进后出)一个直桶

(队列:满足特点  --->  先进先出。
调用collections模块中的deque()函数就可以获取一个队列对象操作步骤: 
     步骤一:导入collections模块 
     步骤二:collections.deque()        -->   得到一个列表对象 
     步骤三:使用队列对象调用存(append)和取(popleft)的函数,完成需求)

你们把5个球投进直筒里,然后从上往下依次打开球,取出里面的部件,组装起来。然后再把另5个球装进直筒里,从桶的另一端把球取出来,同样取出里面部件组装起来

import collections 
''' 
演示队列存取数据的特点:先进先出 
''' 
#获取队列对象:queue 
queue = collections.deque() 
print(queue,type(queue)) 

#向队列中添加数据(模拟进队、入队现象) 
queue.append('A'))

棒球和球棒顺利完成了任务,将部件取出,组建了一个蓝色的小狮子(lambda [变量参数]:表达式)这个小狮子头上并没有小骆驼的标志,它的名字叫lambda(匿名函数(没有名字的函数))它嘴里同样可以含球也可以不含球(匿名函数同样可以定义有返回值没有返回值,有参数没有参数的情况)可以含各式各样的球

(分类匿名函数 --> 以参数进行 
1).1个参数 
2).多个参数 
3).默认参数 
4).可变参数)

也可以返回东西或不返回东西小狮子还可以在转笼中进行工作

匿名函数配合列表对象使用lt = [lambda x:x ** 2,lambda x:x ** 3,lambda x:x ** 4]

在字典中工作。

匿名函数配合字典对象使用 
key = 'C' 
dic1 = { 
        'A':lambda :2*2, 
        'B':lambda :3*3, 
        'C':lambda :4*4 
} 
print(dic1[key]())

棒球和球棒非常喜欢这只蓝狮子,就和他一起玩起棒球来。但一只棒球不够用,所以他们要管理员给他们多拿几个棒球。管理员从操纵室按下开关,一个透明度火炉子一样的东西从天而降到球场中央。炉子上刻着佛印的头像,炉内是好几个叠在一起的水晶球

生成器中是没有真实数据存在的,所以我们是不能直接使用len()函数来尝试得到其长度; 
   如果我们这么做了,错误提示:no len()

炉子的底部是个能打开的开关,每打开一次只能出来一个水晶球

它内部封装了一套公式/算法,只有等到需要调用/执行数据的时候 --》执行next()函数 
才会将公司计算得到的数据结果返回给程序#使用next()函数来得到每一次generator中的内容

当然,佛印师傅能一次性全把水晶球拿出来

方式二:使用循环处理,这种方式不会过量的调用内部表达式执行,不会报错,比较友好
gen = (x for x in range(5))
for g in gen: 
    print(g)。

当球被全部拿出后,就没有球可以拿了(#generator对象中的数据内容只能被解析使用一次,不可逆;一旦调用多了,直接报错了)棒球不开心了,说那我要是在其他地方就没有球玩了,这不行啊。这时,管理员笑嘻嘻的拿出了一个红色的大海螺,并对棒球说,你把这个大海螺放到狮子肚子上的出口处,狮子就会变成和透明火炉一样的容器。就能吐出一样的水晶球啦

(定义函数,在函数内部需要使用关键字yield来记录返回的generator对象的数据公式; 
执行还是通过next()函数来实现了
def func(n): 
    lt = [] 
    for i in range(1,n + 1): 
        if i % 2 == 0: 
            lt.append(i) 
            yield i

棒球和球棒谢过管理员,但同时也产生了疑问?这水晶球和普通的一盒球有什么区别呢?管理员告诉棒球,凡是能被佛印师傅一个一个数球的容器都属于迭代对象(凡是可作用于for循环的对象都是Iterable(可迭代对象)类型)像什么牛肉丸串,大列表、字典、大饼、橙小车还有水晶火炉等。但是只有那些有控制出口开关的才能成为迭代器

1).必须是一个可迭代对象 
2).可以被next()函数所调用的
凡是可以作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列

如果要判断是不是迭代对象,可以用采蘑菇的小姑娘箩筐中的一个宝盒(collections.Iterable(类型)配合内置函数isinstance())宝盒里有个变色蝴蝶,它能分辨出这个容器是不是迭代对象

使用collections模块中的Iterable类型配合isinstance(obj,type)内置函数来判断isinstance(obj,collections.Iterable)

宝盒里还有个变色小龙,它能分辨出这个容器是不是迭代器对象

使用collections模块中的Iterator类型配合isinstance(obj,type)内置函数来判断isinstance(obj,collections.Iterator)

如果迭代对象想变成迭代器对象,就是想加上一个开关的话,就得请双蛇洞中的小白龙了

将可迭代对象转换为迭代器对象 
内置函数:
iter(iterable)
it1 = iter(lt)

棒球越听越发感兴趣!于是就去找采蘑菇的小姑娘的神奇箩筐。管理员告诉他神奇箩筐在双蛇洞里。棒球和球棒来到了双蛇洞门前。发现门前有很多五彩斑斓的宝箱排列在洞门两侧(模块(model):概念:在python中.py结尾的文件,我们称为模块;作用:将类、函数、属性...内容定义其中)五彩斑斓的宝物分三种,一种是双蛇洞内本来就有的(.标准库模块:安装完python环境之后就存在的模块,这些模块我们如果想要使用,导入即可)如五彩魔方(random)五彩钟表(time)五彩机器人(os)采蘑菇的小姑娘的五彩箩筐(collections)五彩苹果树(math)门口的五彩宝箱是人为造出来的(在项目开发过程中,整个团队中程序员自己定义,可以给自己、别人进行调用)还有一些是从国外进口的宝物,首先要经过聪明的管家机器人的同意(打开cmd --> 输入pip -V(此操作查看是否安装完成pip))然后让轿夫将该宝物抬进洞里(安装某个第三方模块:pip install 模块名)轿夫有宝物的详细说明(查看某个第三方模块的详细信息:pip show 模块名)并且轿夫还有张所有抬进的宝物的完整清单(查看当前安装的所有第三方模块:pip list)当然,如果不想要某个宝物了可以让轿夫将其抬走(删除某个第三方模块:pip uninstall 模块名)如果要用宝物或者宝物里的东西,可以直接将宝物,或者宝物里的一些部件拿到你的封闭的工作室

1).精确导入: 
        举例: 
                import time 
                from random import randint 
                from math import pi,
                 也可以直接全部导入
2).模糊导入: 
        举例: 
                from math import * 
                from os import *

在导入的时候,你还可以给宝物或者里面的东西起名字,只要你把之前的名字覆盖住就可以了

给导入的模块或者函数、属性起别名: 
使用as关键字来实现 
【注意】:如果一旦给模块、函数、属性起了别名,原本的名字就不可用了。
如果一旦给模块、函数、属性起了别名,原本的名字就不可用了;
from random import randint as r

有的自己做的宝箱里的宝物不想别别人调用,就用一条四节铁链将其锁住

代码: 
        if __name__ == '__main__':        此代码的作用是将不想被导入加载的代码定义其中

棒球还在洞门前的广场正中央见到一个悬在半空的布口袋,里面装的是有关联的宝物的名字清单。

"包"的概念:package 
创建一个python package,创建成功就是一个所谓的python的包; 
它的作用:将多个有关联的模块定义在其中,方便之后的维护和管理
技术选型 【后端】:Java 【框架】:springboot 【前端】:vue 【JDK版本】:JDK1.8 【服务器】:tomcat7+ 【数据库】:mysql 5.7+ 项目包含前后台完整源码。 项目都经过严格调试,确保可以运行! 具体项目介绍可查看博主文章或私聊获取 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧! 在当今快速发展的信息技术领域,技术选型是决定一个项目成功与否的重要因素之一。基于以下的技术,我们为您带来了一份完善且经过实践验证的项目资源,让您在学习和提升编程技能的道路上事半功倍。以下是该项目的技术选型和其组件的详细介绍。 在后端技术方面,我们选择了Java作为编程语言。Java以其稳健性、跨平台性和丰富的库支持,在企业级应用中处于领导地位。项目采用了流行的Spring Boot框架,这个框架以简化Java企业级开发而闻名。Spring Boot提供了简洁的配置方式、内置的嵌入式服务器支持以及强大的生态系统,使开发者能够更高效地构建和部署应用。 前端技术方面,我们使用了Vue.js,这是一个用于构建用户界面的渐进式JavaScript框架。Vue以其易上手、灵活和性能出色而受到开发者的青睐,它的组件化开发思想也有助于提高代码的复用性和可维护性。 项目的编译和运行环境选择了JDK 1.8。尽管Java已经推出了更新的版本,但JDK 1.8依旧是一种成熟且稳定的选择,广泛应用于各类项目中,确保了兼容性和稳定性。 在服务器方面,本项目部署在Tomcat 7+之上。Tomcat是Apache软件基金会下的一个开源Servlet容器,也是应用最为广泛的Java Web服务器之一。其稳定性和可靠的性能表现为Java Web应用提供了坚实的支持。 数据库方面,我们采用了MySQL 5.7+。MySQL是一种高效、可靠且使用广泛的关系型数据库管理系统,5.7版本在性能和功能上都有显著的提升。 值得一提的是,该项目包含了前后台的完整源码,并经过严格调试,确保可以顺利运行。通过项目的学习和实践,您将能更好地掌握从后端到前端的完整开发流程,提升自己的编程技能。欢迎参考博主的详细文章或私信获取更多信息,利用这一宝贵资源来推进您的技术成长之路!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值