加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python基础 8.迭代器 生成器 包 包管理

发布时间:2020-12-20 10:18:21 所属栏目:Python 来源:网络整理
导读:8.1 列表推导式 循环添加: li = [] for i in range(1,10): li.append(i) 列表推导: li = [i for i in range(1,10)] 列表推导+条件判断: li2 = [i*10 for i in range(1,10) if i % 2 == 0] 列表推导+三目运算: li3 = [i 100 if i % 3 == 0 else i 10 for

8.1 列表推导式

  • 循环添加:

    li = [] for i in range(1,10): li.append(i)

  • 列表推导:

    li = [i for i in range(1,10)]

  • 列表推导+条件判断:

    li2 = [i*10 for i in range(1,10) if i % 2 == 0]

  • 列表推导+三目运算:

    li3 = [i100 if i % 3 == 0 else i10 for i in range(1,10)]

  • 集合推导:

    se = {i for i in range(1,10)}

  • 字典推导:

    {i: j for i,j in enumerate(li)}

8.2 迭代器

1.迭代器:生成迭代器的方法:

1,iterator = iter(可迭代对象)
?
2,iterator = 可迭代对象.__iter__()

2.迭代器对象本身需要支持以下两种方法,它们一起构成迭代器协议:

iterator.__iter__()
?
iterator.__next__()

3.取值:

next(iterator)
?
iterator.__next__()

可迭代对象 只有iter方法 不能使用next取值

注意:如果迭代器值取完之后,会返回 StopIteration 错误

?

8.3 生成器:

方法 一:列表推导式的 [ ] 改成  ( )
方法 二:在函数里面加上yield
生成器不会一下子把所以内容生成出来,在我们需要的时候用next()去生成
def func(num) :
a=0
while a< num:
yield a
a+=1
?
ge = func(10)
next(ge) ? ? 0
next(ge) ? ? 1
next(ge) ? ? 2

?

b = (x for x in range(10))
next(b)0
next(b)1
next(b)2
next(b)3

?

注意:

1.yield一个对象:

返回这个对象
暂停这个函数
等待下次next重新激活

2.yield 表达式只能在函数中使用,在函数体中使用 3.yield 表达式可以使函数成为一个生成器 4.yield 可以返回表达式结果,并且暂定函数执行,直到next激活下一个yield

Python使用生成器对延迟操作提供了支持。所谓延迟操作,是指在需要的时候才产生结果,而不是立即产生结果,从而节省大量的空间,这也是生成器的主要好处

def fib(n):
? num_before=0
? num_behind=1
? for i in range(n):
? ? ? yield num_behind
? ? ? num_before,num_behind=num_behind,num_behind+num_before
?
result=fib(10)
for i in result:
? print(i)

8.4 if name == ‘main‘:

  • name

    python会自动的给模块加上这个属性

    如果模块是被直接调用的,则 name 的值是 main 否则就是该模块的模块名

  • if name == ‘main‘:

    该语句可以控制代码在被其他模块导入时不被执行

8.5 导入模块

?

import test10
from test10 import fib
from test10 import fib as cwd
import sys

在不同目录下,需要使用 sys.path 添加路径

sys.path.append(‘path‘)  (不会用请查百度)

?

8.6 包和包管理

init.py

用相对路径就不能直接执行这个文件 ? 只能等其他文件来导入才能执行

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读