列表生成式、生成器、迭代器

一句话概念

列表生成式——可以直接在列表里进行运算

生成器——一边循环一边计算的机制,称为生成器:generator(就是生成一个不运行的函数或者列表,即数据流)

第二句:生成器与列表的区别——生成器你不知道长度,就是一个数据流;list、dict、str你知道长度

迭代器——可以被next()函数调用并不断返回下一个值的对象称为迭代器

第二句:可迭代对象——可以直接作用于for循环的对象统称为可迭代对象:Iterable

第三句:生成器一定是迭代器,迭代器不一定是生成器

列表生成式

data = [1,2,2,34]

data = [i*2 for i in  data]     #直接运算

data = [i*2 if i>3 else i-1 for i in data ]     #三元运算
print(data)

生成器

第一种方法,列表推到式
data = (x for x in range(10))       #用小括号表示
print(data) #此时只打印函数内存,
第二种复杂式方式
#斐波那契数列

def fob(num):
    a,b = 0,1
    count = 0
    while count < num:
        count += 1
        tmp = b     #也可以写成a,b=b,a+b
        b = a + b
        a = tmp
        yield a     #返回a, 同时挂起当前这个函数, a返回给了通过__next__()调用当前函数的人
        # return a
    else:print("done")

f = fob(1000000)

for i in range(10):
    print(f.__next__())

  

迭代器

>>> from collections import Iterator
>>> isinstance((x for x in range(10)), Iterator)
True
>>> isinstance([], Iterator)
False
>>> isinstance({}, Iterator)
False
>>> isinstance(‘abc‘, Iterator)
False

  

#list、dict、str虽然是Iterable,却不是Iterator。通过iter()函数,可以把list、dict、str等Iterable变成Iterator使用
>>> isinstance(iter([]), Iterator)
True
>>> isinstance(iter(‘abc‘), Iterator)
True

  

				
时间: 2024-11-01 11:39:32

列表生成式、生成器、迭代器的相关文章

python列表生成式&amp;生成器&amp;迭代器

一.列表生成式 什么是列表生成式? 列表生成式是快速生成列表的一种方式.(貌似有些废话) 更专业点的说法:列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 在python2.7里 举个例子,要生成list [1,2,3,4,5],可以用range(1,6) >>> range(1,6) [1, 2, 3, 4, 5] 但是如果要生成[1x1,2x2,3x3,4x4,5x5]怎么做呢? 普通青年做法: >>&

python-基础 生成式 生成器 迭代器 JSON pickl

目录 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 列表生成式,是Python内置的一种极其强大的生成list的表达式. 现在有个需求,看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],我要求你把列表里的每个值加1,你怎么实现? 1 >>> a 2 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 3 >>> b =

列表生成式,迭代器&amp;生成器

一.列表生成式 用例--使列表数值都加上1 1 li = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 2 li_tmp = [i+1 for i in li] 3 li = li_tmp 4 print("new list:"+str(li)) #[1, 2, 3, 4, 5, 6, 7, 8, 9,10] li_dic =  [{1:3+i,2:4+i} for i in range(5)] #[{1: 3, 2: 4}, {1: 4, 2: 5}, {1: 5,

s14 第4天 关于python3.0编码 函数式编程 装饰器 列表生成式 生成器 内置方法

python3 编码默认为unicode,unicode和utf-8都是默认支持中文的. 如果要python3的编码改为utf-8,则或者在一开始就声明全局使用utf-8 #_*_coding:utf-8_*_ 或者将字符串单独声明: a = "中文".encode("utf-8") 函数式编程 函数式编程中的函数指代的是数学中的函数. 函数式编程输入如果确定,则输出一定是确定的.函数中并没有很多逻辑运算 python是一个面向对象的语言,只是一部分支持函数式编程.

17. Python 生成式 &nbsp; 生成器 &nbsp; 迭代器

1.      生成式和生成器 列表生成式是python受欢迎的一种语法之一,通过一句简洁的语法,就能对元组元素进行过滤,还可以对得到的元素进行转换处理. 语法格式: [exp for val in collection if condition] 相当于 result = [] for val in collection: if (condition): result.append(exp) 例子: a = [x*x for x in xrange(10) if x%2 == 0] print

列表生成式,生成器

一.列表生成式 二.生成器 斐波那契数列可以用生成器来实现. 参见:廖雪峰的生成器的教程 原文地址:https://www.cnblogs.com/zhizihuakai66/p/8877315.html

列表生成式&amp;生成器表达式

一.列表生成式 def func(): return [lambda x:i*x for i in range(4)] print([j(2) for j in func()]) 结果:[6,6,6,6] 二.生成器表达式 def func(): return (lambda x:i*x for i in range(4)) print([j(2) for j in func()]) 结果:[0,2,4,6] 原文地址:https://www.cnblogs.com/gpd-Amos/p/899

5.1.24 Python之列表生成式、生成器、可迭代对象与迭代器

语法糖的概念 列表生成式 生成器(Generator) 可迭代对象(Iterable) 迭代器(Iterator) Iterable.Iterator与Generator之间的关系 一.语法糖的概念 "语法糖",从字面上看应该是一种语法."糖",可以理解为简单.简洁.其实我们也已经意识到,没有这些被称为"语法糖"的语法,我们也能实现相应的功能,而 "语法糖"使我们可以更加简洁.快速的实现这些功能. 只是Python解释器会把这

学习7: 列表生成式,生成器,迭代器,可迭代对象

1) 列表生成式,即创建列表的方式 列表生成式,这里是中括号[] >>> [x*x for x in range(0,10)] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] >>> [x * x for x in range(1, 11) if x % 2 == 0] [4, 16, 36, 64, 100] >>> [m + n for m in 'ABC' for n in 'XYZ'] ['AX', 'AY', 'AZ