函数(python)

set:是一组类似于dict的集合,类似于value,不过它不存储value。
本质:无序和无重复元素的集合。

  • 创建:set( )
    创建set需要一个list或者tuple或者dict作为集合输入
s1 = set([1, 2, 3, 3, 5, 4])     #列表[  ]
print(s1)
输出:
{1, 2,3,4,5}

s2 = set((1, 3, 3, 2))           #元组(  )
print(s2)
输出:
{1,2,3}

s3 = set({1:"haha", 2:"wahaha"}) #字典{  }
print(s3)
输出:
{1,2}
  • 添加:.add( )
    (可以添加重复元素,对结果没有影响)
s4 = set([1, 2, 4, 3, 3])
s4.add(6)
s4.add(4)                  #可以添加重复的元素,但不会有变化
#s4.add([6, 7])            #set的元素不能是list,因为列表是可变的
s4.add((6, 7))
#s4.add({1:"c",2:"f"})     #set的元素不能是字典,因为字典是可变的
print(s4)
  • 插入:.update( )
    插入整个列表,元组,字符串,打碎插入
s5 = set([1, 2, 3, 4, 5])
s5.update([6, 7])
s5.update((8, 9))
s5.update("miss")
print(s5)
输出:
{1, 2, 3, 4, 5, 6, 7, 8, 9,'m', 'i', 's'}
  • 删除:.remove( )
s6 = set([1, 2, 3, 4])
s6.remove(3)
print(s6)
输出:
{1, 2, 4}
  • 遍历:
s7 = set([1, 2, 3, 5, 4])
for i in s7:
	print(i)
输出:
	1 2 3 4 5

注意:set没有索引

  • 交集和并集
s8 = set([1, 2, 3])
s9 = set([2, 3, 4])

a1 = s8 & s9       #求交集
a2 = s8 | s9       #求并集

print(a1)
print(type(a1))
print(a2)
输出:
	{2,3}
	<class 'set'>
	{1, 2, 3, 4}
  • 类型转换:
    集合转列表set-list : list(集合名)
s3 = {1, 2, 3}
l3 = list(s3)
print(l3)

集合转元组set-tuple:tuple(集合名)

s4 = {2, 3, 4}
t4 = tuple(s4)
print(t4)
小试牛刀:list去重	
思路分析:list转set,set自动去重,set转回list。(类型转换和set的性质)

l = [1, 2, 2, 3, 5, 7, 4, 5, 6, ,7]
s = set(l)
l = list(s)
print(l)
输出:
	[1, 2, 3 ,4, 5, 6, 7]

可迭代对象:可以直接作用于for循环的对象统称为可迭代对象(Iterable)。
可以用isinstance()去判断一个对象是否是Iterable对象。

可以直接作用于for的数据类型一般分两种:
1.集合数据类型:list,tuple,dict,set,string
2.是generator,包括生成器和带yield的generator function

from collections import Iterable #引入包
print(isinstance([],Iterable)) #列表是Iterable对象
print(isinstance((),Iterable)) #元组是
print(isinstance({},Iterable)) #字典是
print(isinstance("",Iterable)) #字符串是
print(isinstance((x for x in range(10)),Iterable)) #是

迭代器:不但可以作用于for循环,还可以被next()函数不断的调用,并返回下一个值,直到最后抛出一个StopIteration错误表示无法继续返回下一个值。
可以被next()函数调用并不断返回下一个值的对象成为迭代器。(Iterator对象)

可以用isinstance()函数判断一个对象是否是Iterator对象。

from collections import Iterator #引入包
print(isinstance([],Iterator))                     #false
print(isinstance((),Iterator))                     #false
print(isinstance({},Iterator))                     #false
print(isinstance("",Iterator))                     #false
print(isinstance((x for x in range(10)),Iterator)) #true

eg:

l = (x for x in range(5))
print(next(l))
print(next(l))
print(next(l))
print(next(l))
print(next(l))
输出:
       0 1 2 3 4 

转成迭代器Interator对象
格式:iter()
list,tuple,dict,字符串均可转为Interator对象。

a = iter([1, 2, 3])   #list转为Interator对象
print(next(a))
输出:1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值