资讯专栏INFORMATION COLUMN

python_bomb----函数高级特性(生成器)

JouyPub / 1144人阅读

迭代

可以通过 for 循环来遍历 list 或 tuple,这种遍历我们称为迭代(Iteration)
只要是可迭代对象,都可以迭代,比如字典
默认情况下,字典迭代的是key值
如何让判断一个类型是否可迭代

from collections import Iterable    #导入collections模块的Iterable类型判断方法
print(isinstance({"abc":1},Iterable))


True
列表生成式

Python 内置的非常简单却强大的可以用来创建 list的生成式

列表生成方法

for循环

#输出0~9之间偶数的平方
li= []
for i in range(0,10,2):
    li.append(i**2)
    
li
[0, 4, 16, 36, 64]

列表生成式

print([i**2 for i in range(0,10,2)])
[0, 4, 16, 36, 64]

列表生成式相对循环语句,代码简洁

#找出1~100之间所有质数
#质数(prime number)又称素数,有无限个。
#质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。

def isprime(num):
    for i in range(2, num):
        if num % i == 0:
            return False
    else:
        return True


val = int(input("请输入一个数:"))
print([i for i in range(2, val) if isprime(i)])


请输入一个数:100
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

字典生成式
#合并大小写
#key值最终为小写

d1={"a":10,"b":3,"A":10,"B":8}

print({k.lower():d1.get(k.upper(),0)+d1.get(k.lower(),0)for k,v in d1.items()})

{"a": 20, "b": 11, "c": 13}

生成器

通过列表生成式,我们可以直接创建一个列表,受到内存限制,列表容量肯定是有限的
创建一个包含 100 万个元素的列表,占用很大的存储空间

生成器是什么?

在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的 list,从而节省大量的空间。在 Python 中,这种一边循环一边计算的机制,称为生成器(Generator)

读取生成器

next()

for循环

#Fibnonacci数列
#1,1,2,3,5,8,13,....

#yield:函数中带有yield,那么这个函数的返回值就是一个生成器
#如果要执行函数内容,需要调用next方法或者for循环
#当执行next方法时,遇到yield程序停止
#直到下一次next方法时,从上一次yiled停止的地方继续执行,遇到yeild停止
def fibnnonacci(num):   #num表示将来显示几个值
    a,b,count = 0,1,0   #count是已经显示过的次数
    while count<=num:
        yield b
        a,b = b,a+b
        count+=1
res = fibnnonacci(100)
print(next(res))
print(next(res))
print(next(res))
print(next(res))


1
1
2
3

Process finished with exit code 0

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42250.html

相关文章

  • python_bomb----字典(dict)

    摘要:定义字典存放键值对,且值可以是任意的数据类型集合常用方法第一个参数可以是列表元组字符串集合,将参数中每一个值作为值并且所有值都相同生成个银行卡号,默认密码为特性字典不支持索引,切片,重复,连接。 定义 字典存放 key - value(键值对),且value值可以是任意的数据类型 m ={sheen:[100,99,100],star:[97,100,100]} print(m,typ...

    dinfer 评论0 收藏0
  • python_bomb----高阶函数

    摘要:高阶函数实参是一个函数名函数的返回值是一个函数传递的参数包含函数名。内置高阶函数函数函数接收两个参数一个是函数一个是序列将传入的函数依次作用到序列的每个元素并把结果作为新的返回。 高阶函数 实参是一个函数名 函数的返回值是一个函数 print(abs(-10)) f = abs print(f(-10)) #传递的参数包含函数名。 def myfun(x,y,fun): ...

    Pocher 评论0 收藏0
  • python_bomb----集合

    摘要:集合定义集合里面的元素是不可重复的如何定义一个空集合默认情况是,称为字典定义一个空集合集合应用列表去重集合特性集合支持的特性只有成员操作符。 集合定义 集合里面的元素是不可重复的; s={1,1,2,3,4,2,2} print(s) {1, 2, 3, 4} 如何定义一个空集合? s1 = {} # 默认情况是dict, 称为字典 print(s1,type(s1)) {} 定...

    zacklee 评论0 收藏0
  • python_bomb----有趣的微信聊天机器人

    摘要:模块是一个文件,以结尾,包含了对象定义和语句模块让你能够有逻辑地组织你的代码段。把相关的代码分配到一个模块里能让你的代码更好用,更易懂。命令执行成功,执行结果命令执行失败一秒后执行关机命令 Python 模块(Module) 是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句 模块让你能够有逻辑地组织你的 Python 代码段。 把相关的代...

    bawn 评论0 收藏0

发表评论

0条评论

JouyPub

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<