有一个做场景动画的网站,怎样看网站是谁做的,网站建设孩子半夜发烧怎么办,简单网页设计作业函数
一、集合#xff08;set)
特点:不允许有重复元素#xff0c;如果添加重复元素#xff0c;则会自动过滤#xff0c;可以进行交集、并集的运算。
本质#xff1a;无序且无重复元素的数据结构
1 创建集合
s1 set() #空集合 不能是{}#xff0c;这是字典
s2 {1…函数
一、集合set)
特点:不允许有重复元素如果添加重复元素则会自动过滤可以进行交集、并集的运算。
本质无序且无重复元素的数据结构
1 创建集合
s1 set() #空集合 不能是{}这是字典
s2 {1,2,3,4}
print(s1)
print(set([30,40,50])) #通过列表创建
print(set((11,22,33))) #通过元组创建
print(set(hello)) #通过字符串创建
print(set({name:大宝,age:20})) #通过字典创建,得到一个键的集合
#注意重复元素在set中会被自动过滤
2 集合操作
#1 增加
#add添加不可变元素
s1.add(5)
# s1.add([6,7]) #不能添加列表列表和字典都是不可哈希的
s1.add((6,7)) #可以添加元组元素元组是可哈希的
print(s1)
#set.update(s) s必须是可迭代的对象列表、元组、字符串、字典
#update会把列表、元组、字符串打碎添加到集合中
s1 {1,2,3,4}
s1.update([5,6])
s1.update((7,8))
s1.update(hello)
s1.update({1:10,2:20}) #将字典的键添加到s1
print(s1)
#2 删除
#set.remove(elem)
set3 {1,2,3,4,5,6}
set3.remove(4) #直接删除指定元素
print(set3)
print(set3.pop()) #删除任意元素并返回该元素的值
print(set3)
set3.discard(10) #删除的元素不存在不会报错
#set3.remove(10) #如果元素不存在则报错KeyError
#3元素个数
print(len(set3))
#4 成员操作
print(2 in set3) #True
#5 并、交、差集
s1 {1,2,3,4,5}
s2 {3,4,5,6,7}
print(s1 | s2) #并
print(s1 s2) #交集
print(s1 - s2) #差集
二、补充
2.1数据类型的转换
函数名函数值int(x)将x转换为int类型float(x)将x转换成浮点型str(x)将x转换成字符串bool(x)转换成bool类型 的True Falsedict(x)将序列x转换成字典list(x)将序列x转换成列表set(x)将序列x转换成集合tuple(x)将序列x转换成元组
###2.2布尔值
在python中能够解释为假的值有None、0、0.0、False、所有的空容器空列表、空元组、空字典、空集合、空字符串其它是真
2.3 zip函数
zip() 函数用于将可迭代的对象作为参数将对象中对应的元素打包成一个个元组然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致则返回列表长度与最短的对象相同利用 * 号操作符可以将元组解压为列表。
语法zip(iterable1,iterable2, ...)
参数说明iterable -- 一个或多个可迭代对象字符串、列表、元祖、字典
a [1,2,3,4]
b [2,3,4]
res zip(a,b)
print(list(res)) #[(1, 2), (2, 3), (3, 4)]
# 可以使用for-in 遍历
for x,y in zip(a,b):print(x,y)
2.4 列表推导式
运用列表推导式可以快速生成list可以通过一个list推导出另一个list而代码却十分简洁。
#列表推导式语法
[exp for iter_var in iterable]
执行for-in循环时通过iter_var遍历iterable每一项exp表达式中可以直接使用iter_var每遍历一项产生一个新的列表元素。
#生成[0,1,4,9,16,25]
[x*x for x in range(6)]
#生成[0,4,16,36,64]
l2 [x*x for x in range(9) if x % 2 0]
print(l2)
#可以使用双重循环
suit [♥,♦,♣,♠]
face [A,2,3,4,5,6,7,8,9,10,J,Q,K]
poke [(x,y) for x in suit for y in face]
#字典推导式
#列表生成式可以使用两个变量,实现字典的键值交换
d {X:A,Y:B,Z:C}
list5 {v:k for k,v in d.items()}
print(list5)
#集合推导式
print({x for x in range(10)})
#练习
1.将一个列表中所有的字符串变成小写l [Hello,World,IBM,Apple]
如果是这样的列表呢l [Hello,World,10,IBM,Apple]
三、函数引入
前面我们写过九九乘法表但如果我要七七乘法表或五五乘法表的话你会看到三者代码极其类似只是循环变量不同那么如何做到代码重用而不是简单拷贝黏贴修改呢其实可是使用函数完成这一功能
def table(row,col,sep3):for i in range(1, row 1):for j in range(1, col 1):if j i:print(%d*%d %2d % (i, j, i * j), end%*s%(sep, ))print()
#一次编码到处运行
table(8,8)
table(5,5,8)
函数的优点 代码可复用 代码可维护性高 容易排错 可读性好 利于团队开发
1.函数定义
函数就是完成特定功能的代码块本质上是对代码的封装。 语法格式
def 函数名[参数1],[参数2]....[参数n]:函数体 函数名命名规则同变量名要满足标识符命名规则 不能和系统函数重名否则系统函数无法使用 函数定义分两部分函数头和函数体 函数体就是实现功能的代码段以开头必须缩进 函数名的命名风格一般建议用下划线分隔的小写单词组成say_hello
2 函数参数
2.1 实参和形参 形参就是函数定义时小括号里的变量 实参函数调用的时候小括号里的表达式 函数可以没有形参和实参
2.2 参数分类 位置参数要求实参顺序必须和形参顺序完全一致由形参顺序决定实参顺序 def say_hello(name,age,home):print(大家好我是{},我今年{}岁了我来自{}.format(name,age,home))
say_hello(王二妮,18,湖北武汉) #实参个数、顺序必须和形参一致 关键字参数函数调用时实参可以是键值对键就是形参名字这样的调用实参不必关心形参的顺序。 def say_hello(name,age,home):print(大家好我是{},我今年{}岁了我来自{}.format(name,age,home))
say_hello(name王二傻,home大连,age20) #三个关键字参数
say_hello(大傻,home美国,age30) #两个关键字参数
sya_hello(二傻,24,home何方) #一个关键字参数 默认值如果形参在定义的时候给定一个值那么函数在调用时就可以不传实参可以简化调用 默认值参数必须放到最右边 如果传了实参那么实参优先不会使用默认值 默认值只计算一次 默认值必须是不可变对象 def my_power(x,n2):return (x) ** n
my_power(3)
my_power(4,0.5)def test(a[]):a.append(end)print(a)
test([1,2,3])
test() #[end]
test() #[end,end]可变参数传入的参数个数是可变的可以是1个、2个到任意个还可以是0个。 #使用*接收任意数量的位置参数#注意*的不定长参数被当做元组处理
def demo(a,b,*args):print(a,b,args)demo(12,33,90)
demo(1,2,3,4,5)
a(1,2,3)
demo(*a)#使用**接收任意数量的关键字参数
#注意:**的不定长参数被当做字典处理
def demo1(a,**args):print(a,args)
demo1(1,namekk,age3)
b {a:20,b:12,c:32}
demo(**b)2.3 参数组合 形参顺序须按照以下顺序位置参数、默认值参数、*args,**kwargs
3 函数调用 函数调用必须在函数定义之后 函数调用必须能够正确传递实参 def demo(a,b,c0,*arg1,**arg2):print(a,b,c,arg1,arg2)
demo(1,3,k4)
demo(1,2,3,4,5)
demo(1,b3,c3,d5)
demo(*(1,2,3),**{name:12}) #任何函数都可通过这种形式传递参数4 返回值
可以通过return语句返回计算结果。语法 return 表达式 return的作用一个是终止函数的执行所有执行了return后其后的语句不会被执行 如果没有return语句则默认返回的是None return还可以返回给调用者数值 return可以返回一个值如果要返回多个值那么返回的是一个元组 def demo2():return 1
def demo3():return 1,2,3
print(demo2())
print(demo3()) #(1,2,3)5 文档字符串
函数文档字符串documentation string docstring是在函数开头用来解释其接口的字符串。简而言之帮助文档 包含函数的基础信息 包含函数的功能简介 包含每个形参的类型使用等信息
文档字符串书写规则 必须在函数的首行 使用三引号注解的多行字符串( ) 或( ) 函数文档的第一行一般概述函数的主要功能第二行空第三行详细描述。 def test():函数名test功能测试参数无返回值无print(函数输出成功)#使用__doc__属性查看文档字符串
print(test.__doc__)6.参数传递
python的参数传递是简单的值传递当然这里的值是指变量的引用地址不是变量的值。不存在值传递和引用传递的区分。简而言之python的参数传递可以称之为对象引用传递对象可以分为 不可变对象int、float、None、complex、bool、tuple、str,range 在函数内部不可能修改函数外部的变量 可变对象: dict、list 可以在函数内部修改
7 空函数
借助于pass语句实现函数体不完成任何功能只有一个pass语句
def test():pass8 匿名函数
不再使用def 函数名()这种形式定义函数而是使用lambda来创建匿名函数
特点 lambda只是一个表达式函数体比def简单的多 lambda的函数体不再是代码块 lambda只有一行增加运行效率
语法
lambda [arg1,arg2....argn]:函数体
add lambda a,b:a b
print(add(3,5))9.函数类型
函数也是一种类型我们自定义的函数就是函数对象函数名保存了函数对象的引用地址
def test():print(我是测试函数)print(test) #函数名是变量指向了函数对象
pf test #pf变量也指向了函数对象所以也可以通过pf调用test函数
pf()10.传入函数
一个函数就可以接收另一个函数作为参数这种函数就称之为高阶函数也可以称之为传入函数。可以实现通用编程排序等复杂功能