python视频笔记12(set,迭代器)

set :

类似dict,是一组key的集合,不存储value
本质:无序和无重复元素的集合,重复元素在set中会自动被过滤

创建set:

需要一个list或者tuple作为输入集合

s1 = set([1,2,3,4,5])
print (s1)
s2 = set((1,2,3,4,5))
s3 = set({1:"good", 2:"nice"})

添加:

可以添加重复的但是不会又效果,不能添加列表 列表可变 可以是元组

s4 = set([1,2,3,4,5])
s4.add(6)
s5 = (1,2,3,5,6)

set.updata([6,7,8]):更新插入整个list,tuple,字符串 print (s5)

s5.updata((9,10))
print (s5)

删除:

s6 = (1,2,3,4,5)
s6.remove(3)

遍历:

s7 = (1,2,3,4,5,6)
for i in s7:
	print (i)

交集和并集:

s8 = set([1,2,3])
s9 = set ([1,4,5])
a1 = s8 & s9
print (a1)
a2 = s8 | s9 
print (a2)

转换

list ---> set
	l1 = [11,2,3,4,555,61,,1,1,1]
	s1 = set (l1)
tuple ---->set
	t1 = (1,2,3,4,5,1,2,3,4,5)
	s2 = set(t1)
set ----->list
	s3 = {1,2,3,4,5}
	l3 = list(s3)
set------>tuple
	s4 = {1,2,3,5}
	t4 =  tuple(s4)

list 去重

 l = {1,2,3,4,2,3,4,5}
 l = list(set(l)
 	print(l)

迭代器:

可迭代对象:

可以直接作用于for循环的对象(iterable)
可以用isinstance()去判断一个对象是否为一个可迭代对象
可以直接作用与for的数据类型:
1:集合类 如list ,tuple dict set string
2:generator 包括生成器 和带 yield 的generator function

使用:

from collections import iterable
print (isinstance([],iterable))
print (isinstance({},iterable))
print (isinstance((),iterable))
print (isinstance("",iterable))
print (isinstance((x for x in range(10)),iterable))----False

什么是迭代器:

不但可以作用于 for 还可以 被next()不断的调用 并返回下一个值
直到最后抛出一个StopIteration错误 表示无法继续返回下一个值
可以被 next()调用的并不断返回一个值的对象为迭代器(Iterator对象)
可以使用 isinstance()判断是否为一个Iterator对象

from collections import Iterator
print (isinstance([], Iterator))
print (isinstance({}, Iterator))
print (isinstance((), Iterator))
print (isinstance("", Iterator))
print (isinstance((x for x in range(10)), Iterator))----True
l = (x for x in range(5))
print(next(l))
print(next(l))
print(next(l))
print(next(l))
------------->0,1,2,3,4
l = (x for x in [1,2,2,123,4,])
print(next(l))
print(next(l))
print(next(l))
print(next(l))

list ---->Iterator 对象

a = iter([1,2,3,4])
print (next(a))
print (isinstance(iter(()),Iterator))
print (isinstance(iter([]),Iterator))
print (isinstance(iter({}),Iterator))
print (isinstance(iter(""),Iterator))
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、付费专栏及课程。

余额充值