9月30日学习总结

9月30日学习总结

一、迭代器

1.什么是迭代器(iter)

1.迭代器是容器型数据类型

2.创建迭代器:

(1)将其他序列转换成迭代器

(2)创建生成器

3.特点

a.打印不能查看到迭代器中的元素

b.不能通过len获取迭代器中元素的个数

c.如果要使用元素必须将元素从迭代器中取出,而且取出后无法放回

4.重要结论:不管用任何方式获取到了迭代器中的元素,那么被取到的元素一定会从迭代器中消失。

i1=iter('abc')
print(i1)       #<str_iterator object at 0x0000020E8630B4C0>
#print(len(i1))            #: object of type 'str_iterator' has no len()
i2=iter([10,20,30,40])          
print(i2)	#<list_iterator object at 0x00000230677DB3D0>

# 2.获取元素
# 1)获取单个元素:next(迭代器)
i1=iter('abc')
print(next(i1)) #a
print(next(i1)) #b
print(next(i1)) #c
# print(next(i1)) #报错! StopIteration

i2=iter([10,20,30,40])  
next(i2)
print(list(i2))     #[20, 30, 40]
# print(next(i2))     #报错! StopIteration

二、生成器

1.什么是生成器 - generator

1.生成器是一种容器:是一种特殊的迭代器(具备迭代器的特点)

2.怎么创建生成器

1.调用带有yield关键字的函数就可以得到一个生成器。

2.调用普通函数会执行函数体,并且获取函数返回值(函数调用表达式的值就是函数的返回值);如果被调用的函数中有yield,那么调用函数的时候不会执行函数体,也不会获取函数返回值,函数调用表达式的值是一个生成器对象

3.控制生成器元素的个数和元素的值

def func2():
    yield

gen1=func2()
print(gen1)	# <generator object func2 at 0x000001938B9C9510>
print(len(list(gen1)))	# 1
# 练习:创建一个生成器,可以创建的数据:'py001'、'py002' ... 'py100'
def func():
    for x in range(1,101):
        yield  f'py{x:0>3}'

gen1=func()
print(next(gen1))	# py001
# 练习:写一个创建一副扑克牌的生成器
# 花色:梅花,方块,黑桃,红桃
# 数字:
from random import shuffle
color=['♣','♦','♠','♥']
num=[str(x) for x in range(2,11)]+list('JQKA')
def get_poker():
    for x in color:
        for y in num:
            yield x+y
    yield 'JOKER'
    yield 'joker'

gen1=get_poker()
# print(list(gen1))


# 洗牌(随机打乱列表中元素的顺序)
pokers=list(gen1)
shuffle(pokers)
print(pokers)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值