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)