3 -14 迭代 和列表 生成器

列表生成式 执行效率高 简洁

a = []for i in range(5):    a.append(i*2)print(a)

列表形式
[a * 2 for a in range(5)]    ##列表形式 执行效率低   主要是先完成生成 再展现 占用内存


##同样 可以传入函数  还执行
def aa(name):
    print(‘ni hao %s‘%name )
print [a * 2 for a in range(5)]
[aa(i) for i in range(5)]        

生成器 :当你调用的时候还会给出结果 从而大大提高了调度性能 

b = (a * 2 for a in range(50000))print(b)

<generator object <genexpr> at 0x000000000256D3A8>   ### 返回的只是一个内存地址

方法  b.next ()

python   3.x 是  b.__next__()   只能调取下一个  没有别的 方法再调取 上一个



斐波那契

def  aa(num):
    n,a,b = 0,0,1
    while n < 10:
        print(b)
        a,b = b,a+b
        n+=1

aa(10)

列表生成

def  aa(num):
    n,a,b = 0,0,1
    while n < 10:
        yield (b)    ###当启用yield的时候生成的结果是一个内存地址 变成了生成器
        a,b = b,a+b
        n+=1

aa(10)    ###返回值就变成了一个生成器
###结果    <generator object aa at 0x00000000025AD3A8>
cc = aa(10)
print(cc.next())
print(‘-----------‘)   ### 目前达到了随意进出一个程序 来执行想要的操作
print(cc.next())
print(‘============‘)

原文地址:https://www.cnblogs.com/th-lyc/p/8572728.html

时间: 2024-10-08 23:07:51

3 -14 迭代 和列表 生成器的相关文章

Python迭代和列表生成器

使用for循环遍历list和tuple,这种遍历成为迭代 在如C语言中都是通过下标拿到值,for...in这种方式其实是相同的. 在函数的一节,这样说--->'求和函数sum(),sum(iterable,start),第一个参数必须是可以迭代对象,listtuple.'  可迭代对象为list,tuple 所以使用for遍历时,对象是要可以迭代的. 如何判断一个对象能不能迭代? Python的collections模块的Iterable可以判断是否可以迭代;   isinstance()函数用

Python的高级特性之切片、迭代、列表生成式、生成器

切片 切片就是获取一个list.tuple.字符串等的部分元素 1 l = range(100) 2 #取[0,5)元素 3 print(l[:5]) #[0, 1, 2, 3, 4] 4 #在[0,99]中每隔10个元素取一个 5 print( l[::10]) #[0, 10, 20, 30, 40, 50, 60, 70, 80, 90] 6 #取最后五个元素 7 print( l[-5 : ]) #[95, 96, 97, 98, 99] 8 9 str = "www.genekang.

python的高级特性:切片,迭代,列表生成式,生成器,迭代器

1 #演示切片 2 k="abcdefghijklmnopqrstuvwxyz" 3 #取前5个元素 4 k[0:5] 5 k[:5] 6 #后5个元素 7 k[-5:] #vwxyz 8 #每隔一个取一个 9 k[::2] #acegikmoqsuwy 10 #原样复制一个 11 k[:] 12 13 #演示迭代 14 d={'a':1,'b':2,'c':3} 15 for key in d: 16 print(key) 17 #结果输出abc, 即输出key, 而且要注意dict

Python全栈开发之---迭代器、可迭代对象、生成器

1.什么叫迭代 现在,我们已经获得了一个新线索,有一个叫做"可迭代的"概念. 首先,我们从报错来分析,好像之所以1234不可以for循环,是因为它不可迭代.那么如果"可迭代",就应该可以被for循环了. 这个我们知道呀,字符串.列表.元组.字典.集合都可以被for循环,说明他们都是可迭代的. 我们怎么来证明这一点呢? 1 from collections import Iterable 2 3 l = [1,2,3,4] 4 t = (1,2,3,4) 5 d =

列表生成器

li.li1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC Light"; color: #1a5568 } li.li2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #435a66 } li.li3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px

初学python随笔——列表生成器、生成器和迭代器

列表生成器 # 常见的是range()创建一个数字的列表 >>>[ x*x for x in range(10)] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] # 后边也可以加上判断语句 >>>[ x*x for x in range(10) if x%2 == 0] [0, 4, 16, 36, 64] # 字符也可以这么玩 >>> [m + n for m in 'ABC' for n in 'XYZ'] ['AX',

python迭代、列表生成式

迭代: 迭代对象(Iterable),可以直接作用于for循环的对象,如list / tuple / dict / set / str /等集合数据类型可以直接作用于for循环 >>> spam={1:'A',2:'B',3:'C'} >>> for x in spam: #默认情况下,dict迭代的是key print x 1 2 3 >>> for value in spam.values(): #values():迭代value print va

python 列表生成器

python 列表生成器 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 一个循环 在C语言等其他语言中,for循环一般是这样的 如果python也这么写,那么真该看下python的基础教程了~ 但要注意的是,需要加一个[]来,否则会报错... 在上面的例子中,不仅可以嵌套for,甚至可以嵌套if语句 再看看,原来是什么样子 两个循环呢? 原来可能是这样的? 现在可以这样了!!!

python列表生成器与生成器

列表生成器是python内置的非常简单却非常强大的. 生成一个列表[1,2,3,4]可以用list(range(1,5)) 列表生成器的应用 如果上面的公式加上判断,就可以筛选出想要的结果,比如仅需要偶数的平方 使用多层循环 生成器 生成器与列表生成器的本质区别就是:一个已经生成数据了,使用时,如果数据过大,会产生内存溢出,而生成器是只有循环时,才会生成数据. 生成器与列表生成器的区别在于一个是[],一个是() 生成器书写 g=(x x ()) (g) 打印generator的方法是next(g