一、set()
set:类似dict,是一组key的集合,不存储value
本质:无序和无重复元素的集合
1.创建
#创建set需要一个list或者tuple或者dict作为输入集合 #重复元素在set中会自动被过滤 s1 = set([1,2,3,4,5,3,4,5]) print(s1) s2 = set((1,2,3,3,2,1)) print(s2) s3 = set({1:"good", 2:"nice"}) print(s3)
2.添加
s4 = set([1,2,3,4,5]) s4.add(6) s4.add(3) #可以添加重复的,但是不会有效果 #s4.add([7,8,9]) #set的元素不能是列表,因为列表是可变的 s4.add((7,8,9)) #s4.add({1:"a"}) #set的元素不能是字典,因为字典是可变的 print(s4)
3.插入整个list、tuple、字符串,打碎插入
s5 = set([1,2,3,4,5]) s5.update([6,7,8]) s5.update((9,10)) s5.update("sunck") print(s5)
4.删除
s6 = set([1,2,3,4,5]) s6.remove(3) print(s6)
5.遍历
s7 = set([1,2,3,4,5]) for i in s7: print(i) #set没有索引的 #print(s7[3]) for index, data in enumerate(s7): print(index, data) s8 = set([1,2,3]) s9 = set([2,3,4])
6.交集
a1 = s8 & s9 print(a1) print(type(a1))
7.并集
a2 = s8 | s9 print(a2) print(type(a2))
二、类型转换
1.list去重复
l = [1,2,3,4,3,4,5,6] ''' s = set(l) l = list(s) print(l) ''' l = list(set(l)) print(l)
2.类型转换
(1)list–>set
l1 = [1,2,3,4,5,3,4,5] s1 = set(l1)
(2)tuple–>set
t2 = (1,2,3,4,3,2) s2 = set(t2)
(3)set–>list
s3 = {1,2,3,4} l3 = list(s3) print(l3)
(4)set–>tuple
s4 = {2,3,4,5} t4 = tuple(s4) print(t4)
三、迭代器
from collections import Iterable from collections import Iterator
可迭代对象:可以直接作用于for循环的对象统称为可迭代对象(Iterable)。可以用isinstance()去判断一个对象是否是Iterable对象
可以直接作用于for的数据类型一般分两种
1、集合数据类型,如list、tuple、dict、set、string
2、是generator,包括生成器和带yield的generator function
print(isinstance([], Iterable)) print(isinstance((), Iterable)) print(isinstance({}, Iterable)) print(isinstance("", Iterable)) print(isinstance((x for x in range(10)), Iterable)) print(isinstance(1, Iterable))
迭代器:不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后跑出一个StopIteration错误表示无法继续返回下一个值
可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator对象)
可以使用isinstance()函数判断一个对象是否是Iterator对象
print(isinstance([], Iterator)) print(isinstance((), Iterator)) print(isinstance({}, Iterator)) print(isinstance("", Iterator)) print(isinstance((x for x in range(10)), Iterator)) l = (x for x in [23,4,5,64,3435]) print(next(l)) print(next(l)) print(next(l)) print(next(l)) print(next(l)) #print(next(l))
转成Iterator对象
a = iter([1,2,3,4,5]) print(next(a)) print(next(a)) print(isinstance(iter([]), Iterator)) print(isinstance(iter(()), Iterator)) print(isinstance(iter({}), Iterator)) print(isinstance(iter(''), Iterator))
四、函数概述
认识函数:在一个完整的项目中,某些功能会反复的使用。那么会将功能封装成函数,当我们要使用功能的时候直接调用函数即可
本质:函数就是对功能的封装
优点
1、简化代码结构,增加了代码的复用度(重复使用的程度)
2、如果想修改某些功能或者调试某个BUG,还需要修改对应的函数即可
1.定义函数:
格式:
def 函数名(参数列表):
语句
return 表达式
def:函数代码块以def关键字开始
函数名:遵循标识符规则
():是参数列表的开始和结束
参数列表(参数1,参数2,……,参数n):任何传入函数的参数和变量必须放在圆括号之间,用逗号分隔。函数从函数的调用者哪里获取的信息
冒号:函数内容(封装的功能)以冒号开始,并且缩进
语句:函数封装的功能
return:一般用于结束函数,并返回信息给函数的调用者
表达式:即为要返回给函数的调用者的信息,
注意:最后的return 表达式,可以不写,相当于return None
凯 = "帅" print(凯)
函数的调用
格式:函数名(参数列表)
函数名:是要使用的功能的函数函数名字
参数列表:函数的调用者给函数传递的信息,如果没有参数,小括号也不能省略
函数调用的本质:实参给形参赋值的过程
五、定义了一个无参无返回值的函数
def myPrint(): print("sunck is a very good man!") print("sunck is a nice man!") print("sunck is a handsome man!") myPrint() myPrint() myPrint() myPrint() myPrint()
六、函数的参数
需求:编写一个函数,给函数一个字符串和一个年龄,在函数内部打印出来
形参(形式参数):定义函数时小括号中的变量,本质是变量
参数必须按顺序传递,个数目前要对应
def myPrint(str, age, hoby): print(str, age) def myPrint(str, age): print(str, age)
实参(实际参数):调用函数时给函数传递的数据,本质是值
myPrint("sunck is a good man", 18)