python哪些类型可以作为迭代器_python0.8-----set类型与迭代器

set:类似dict,是一组dict的集合,不存储value。

本质:无序(没有下标)无重复的元素的集合。

创建:

创建set需要一个list或者tuple或者dict作为输入集合。重复元素在色中会被自动过滤。

s1=[1,2,3,4,5,6,1,2]

set(s1)={1,2,3,4,5,6} --表示》将列表转化成set集合类型。

s2=(1,2,3,4,5,6,1,2)

set(s2)={1,2,3,4,5,6} --表示》将元组转化成set集合类型。

s3={1:2,2:3,3:4}

set(S3)={1,2,3}       --表示》将字典转化成set集合类型。注意,只将字典的key转为set集合的元素。

还有以下操作:

list(set1)                      --表示》将set集合类型转化成列表类型。

tuple(set1)                   --表示》将set集合类型转化成元组类型。

增:

可以添加重复元素,但是不会有效果。

set1.add(value)  valu不可以是列表或者字典,一位列表或者字典是可变对象。

set1.update(value) 打碎插入,value必须是字符串,列表,元组,字典等可迭代类型。

删:

set1.remove(value):删掉集合set1里面的value大小的元素。

查:

只能通过遍历查找元素:

for i in set1:

print(i)

交集和并集:

set1=set2 & set3 :把set2和set3的交集赋给set1。

set1=set2  |  set3 :把set2和set3的并集赋给set1。

迭代器:

可迭代对象:可以直接作用于for循环的对象统称为可迭代对象(iterable),例如:字符串,列表,元组,set集合,字典。

可以用isinstance()判断对象是否为iterable对象。不过再调用isinstance之前应该输入:

from collections import Iterator

例如:

isinstance([],Iterable) 返回True,说明[]是可迭代对象

isinstance((),Iterable) 返回True

isinstance({},Iterable)  返回True

isinstance("",Iterable) 返回True

isinstance((x for x in range(10)),Iterable)  返回True,说明(x for x in range(10))是可迭代对象

可以直接作用于for的数据类型一般分为两种:

1:集合数据类型,如:list,tuple,dict,set,string。

2:generator,包括生成器和带yield的generator function。

迭代器(Iteratior对象):不但可以作用于for循环,还可以被next()函数不断调用,并返回下一个值,直到最后抛出一个异常stopIteration,表示无法继续返回下个值的对象,这边是迭代器。

可以用isinstance()函数判断一个函数是否是Iterator对象,不过在此之前,要调用:from collection import Iterator。

isinstance((x for x in range(10)),Iterator)  返回True,说明(x for x in range(10))是一个迭代器。

例如:

令k=(x for x in range(5)),则k就是一个迭代器。

next(k)=0

next(k)=1

next(k)=2

next(k)=3

next(k)=4

next(k)---因为迭代器内容已经访问完了,会抛出异常->stopIteration

list,tuple,str,dict都可以转化成为迭代器:

a=iter(list1) :把list1转化为迭代器了,赋值给a。

b=iter(tuple1) :把tuple1转化为迭代器了,赋值给b。

c=iter(str1) :把str1转化为迭代器了,赋值给c。

d=iter(dict1) :把dict1转化为迭代器了,赋值给d。

迭代器应用实例:将input以'\n'表示结束标志改成以'end'作为input的结束标志。

endStr='end'

str=''

for line in iter(input,endStr)

str+=line+'\n'

print(str)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值