【11】迭代器与生成器

2019-03-19  本文已影响0人  Z_JoonGi

1.什么是迭代器(iter)

a.将其他的数据转换成迭代器
iter1 = iter()

迭代器的元素:任何类型的数据都可以,可以重复。

b.生成器

2.查 - 获取元素的值

注意:不管以任何形式获取了迭代器中某个元素的值,这个元素会消失。
a.获取单个元素
#1
next(迭代器)
#2
迭代器.__next__()

返回容器中最上面的元素

b.遍历取出迭代器中的每个元素
iter3 = iter('abcd')
for item in iter3:
    print(item)

3.什么时候使用迭代器

多个数据中,某些数据使用过了,不需要再保存时。

4.什么是生成器

5.生成器怎么产生数据

练习: 写一个生成器,能够产生'stuXXXX'的学号, stu0000-stu9999

def stu_gen():
    stu = 0
    while True:
        if stu < 10000:
            str1 = 'stu'+str(stu).zfill(4)
            stu +=1
            yield str1


s = stu_gen()
for _ in range(20):
    print(next(s))
- 注意:yield后面可以加多个数值(可以是任意类型),但返回的值是元组类型的。

6.生成式

生成式是生成器的另一种写法(简写)

a.语法1

生成器 = (表达式 for 变量 in 序列)
列表变量 = [表达式 for 变量 in 序列]

b.说明:

可以是值、变量、运算表达式、函数调用表达式等,只要不是赋值语句都可以

c.展开
def  函数名():
    for 变量 in 序列:
        yield 表达式
a.语法2

生成器 = (表达式 for 变量 in 序列 if 条件语句)
列表变量 = [表达式 for 变量 in 序列 if 条件语句]

b.展开
def  函数名():
    for 变量 in 序列:
          if 条件语句
              yield 表达式

结果是生成器

gen1 = [(x, x*2) for x in range(10) if x % 2]

结果是列表

gen1 = [(x, x*2) for x in range(10) if x % 2]

补充:三目运算符

C中的三目运算符:表达式?值1:值2
python的三目运算操作: 值1 if 表达式 else 值2

上一篇下一篇

猜你喜欢

热点阅读