集合 set
集合是可变的容器
集合内的数据都是唯一的(不能重复多次)
集合是无需的存储结构,集合中的数据没有先后关系
集合的元素必须是不可变的元素(集合内不可放列表,集合)
集合是可迭代对象
集合是相当于只有键没有值的字典(键即是集合的数据)
创建集合:
set()
创建非空集合:
s={1,2,3}
集合的构造函数 set
set() 创建一个空的集合对象(不能用{}来创建一个新的集合)
set(iterable) 用可迭代对象创建一个新的集合对象
示例:
s=set() #非空集合
s={3,5,7,9}
s=set('ABC') # {'A','B','C'}
s=set('ABCABCABC') #{'A','B','C'} 主动去重
s=set({1:'一',2:'二',5:'五'}) #{1,2,5}
s={True,None,'ABC',(1,2,3)}
集合的运算:
交集& 并集| 补集- 对称补集^ 子集< 超集>
& 生成两个集合的交集
s1={1,2,3}
s2={2,3,4}
s3=s1 & s2 #s3={2,3}
| 生成两个集合的并集
s1={1,2,3}
s2={2,3,4}
s3=s1 | s2 #s3={1,2,3,4}
- 生成两个集合的补集
s1={1,2,3}
s2={2,3,4}
s3=s1 - s2 #s3={1}
(两个属于s1,s1对s2的补集:s1中有s2没有)
^ 生成两个集合的对称补集
s1={1,2,3}
s2={2,3,4}
s3=s1 ^ s2 #s3={1,4}
(s1,s2交集之外的集合)
与(s1-s2)|(s2-s1)相同
< 判断一个集合是另一个集合的子集
> 判断一个集合是另一个集合的超集
s1={1,2,3}
s2={2,3}
s1 > s2 #True s1为s2的超集
s1 < s2 #False
== / != 判断集合相同/不同
s1={1,2,3}
s2={3,2,1}
s1==s2 #True
s1!=s2 #False
<= / >= 略
in / not in运算符
等同于列表的in运算符,用于判断一个元素是否在集合中,如果在返回True,否则False
not in 与 in 相反
示例:
2 in {1,2,3} #True
2.0 in {1,2,3} #True
True in {1,2,3} #True
用于集合的函数
len(x)/max(x)/min(x)
sum(x)/any(x)/all(x)
练习:
经理有:曹操,刘备,孙权
技术人员有:曹操,孙权,张飞,关羽
用集合求:
1即是经理也是技术员的人有谁
2是经理,不是技术员的人
3是技术员不是经理
4张飞是经理吗?
4身兼一直的人有谁?
6经理和技术员共有几人?
s1={'曹操','刘备','孙权'}
s2={'曹操','孙权','张飞','关羽'}
print('即是经理也是技术员的人:',s1&s2)
print('是经理,不是技术员的人',s1-s2)
print('是技术员不是经理',s2-s1)
s='张飞' in s1
print(s)
print('身兼一直的人',s1^s2)
print('经理和技术员共有几',s1|s2)
集合常用方法:
文档参见:set.html
集合是可迭代对象
s={1,2,3}
for x in s:
pass
l=[x**2 for x in s]
集合推导式:
集合推导式是用可迭代对象创建集合的表达式
语法:
{表达式 for 变量 in 可迭代对象 [if 真值表达式]}
注:[]的内容可以省略
示例:
s='ABC'
s2={x for x in s} #s2={'A','B','C'}
推导式小结:
三种:
列表推导式 [x for x in l if ...]
字典推导式 {x: x**2 for x in l if ...}
集合推导式 {x for x in l if ...}
固定集合 frozenset
固定集合是不可变的,无序的,含有唯一元素的集合
作用:
固定集合可以作为字典的键,也可以作为集合的值
固定集合的构造函数:
frozenset() 创建一个空的固定集合对象
frozenset(iterable) 用可迭代对象创建一个固定集合对象
示例:
fs=frozenset() #创建空固定集合
fs=frozenset('ABC')
固定集合的运算:
& 交集
| 并集
- 补集
^ 对称补集
< <= > >= == !=
in /not in 运算
阶段总结:
数据类型:
不可变类型:
bool,int,float,complex,str,tuple,frozenset,bytes(字节串)
可变数据类型:
list,dict,set,bytearray(字节数组)
运算符
+ - * / // % **
> >= < <= == !=
is / is not
in /not in
not and or
& ^ |
+(正号),-(负号)
[] 索引和切片
表达式:
1
1+2
max(1,2,3)+max(4,5,6)
print('hello')
条件表达式 x if x>y else y
全部的推导式:列表,字典,集合推导式(三种)
语句:
表达式语句
print('hello')
赋值语句
a=100
a=b=c=200
x,y=100,200
del 语句
if 语句
while 语句
for 语句
break 语句
continue 语句
pass 语句
内建函数:
-用于容器的函数
len(x)
max(x)
min(x)
sum(x)
any(x)
all(x)
-构造函数
int(x)
bool(x)
float(x)
complex(x)
str(x)
list(x)
tuple(x)
dict(x)
set(x)
frozenset(x)
-数值处理函数
abs(x)
round(x)
pow(x,y,z=None)-------x**y%z
-进制字符串
bin(x)
oct(x)
hex(x)
-编码转换
chr(x)
ord(x)
-返回可迭代对象的函数
range(start,stop,step)
reversed(x)
-输入输出函数
input()
print(....,sep='',end='\n')
-其他
id(x)
type(x)
函数 function
什么是函数
函数是可以重复执行的语句块,可以重复的调用
函数是面向过程编程最小的单位
作用:
1.用于封装语句块,提高代码的重用性
2定义用户级别的函数
def 语句 (define)
语法:
def 函数名(形参列表):
语句块
说明:
函数的名字就是语句块的名称
函数名的命名规则与变量名的规则相同(必须是标识符)
函数名是一个变量(不要轻易对其赋值)
函数有自己的名字空间,在函数外部不可能访问函数内部的变量,在函数内部可以访问函数外部的变量
要让函数处理内部的数据最好用参数给函数传入一些数据
函数如果不需要传入参数,参数列表可以为空
语句部分不能为空,如果为空需要填充pass语句
示例:
def say_hello():
print('hello world!')
print('hello tarena!')
print('hello everyone!')
say_hello()
函数调用:
函数名(实际调用传递参数)
说明:
函数调用是一个表达式,如果函数内没有return语句,默认返回None对象
示例:
写一个函数,给他两个数据,打印最大值
def mymax(a,b):
m=a
if b>m:
m=b
print('最大数是',m)
mymax(100,200)
练习:
写一个函数myadd,此函数中的参数列表有两个参数x,y此函数的功能是打印x+y的和
def myadd(x,y):
m=x+y
print('两数之和为:',m)
return 语句
return[表达式]
注:[]内的内容可以省略
作用:
用于函数中,结束当前函数的执行,返回到调用函数的地方,同时返回一个对象的引用关系
说明:
1retrun语句后跟的表达式可以省略,省略相当于return None
2如果函数内没有return语句,则函数执行完最后一条语句后返回None(相当于在最后加了一条
return None语句)
练习:
1写一个函数myadd2,实现给出两个数,返回这两个数的和
如:
def myadd(x,y):
return(x+y)
a=int(input('输入第一个数'))
b=int(input('输入第二个数'))
print('和是',myadd(a,b))
2.写一个函数mymax3,返回三个数中最大的值
def mymax3(a,b,c):
d=max(a,b,c)
return d
print(mymax3(100,300,200))
print(mymax3('ABC','123','abc'))
3.写一个函数,input_numbers,用来获取用户循环输入的正整数,当用户输入负数时结束输入
将用户输入的数字以列表的形式返回,再用内建函数max,min,sum打印相关值
def input_numbers():
def input_numbers():
l=[]
while True:
a=int(input('输入数字:'))
if a<0:
break
else:
l.append(a)
return l
print(l)
L = input_numbers()
print('最大:',max(L))
print('最小:',min(L))
print('之和:',sum(L))
练习:
1写一个函数get_chinese_char_count(s)函数,此函数实现的功能是给定一个字符串,返回这个字符串中中文
字符的个数
def get_chinese_char_count(s):
s=input('请输入中英文混合字符串')
print('输入的中文字符的个数是:')
get_chinese_char_count(s)
2定义两个函数:
sum3(a,b,c)用于返回三个数的和
pow3(x) 用于返回x的单词方(立方)
用以上函数计算:
1)计算1的立方+2的立方+3的立方
2计算1+2+3的和的立方
即:1**3+2**3+3**3和(1+2+3)**3
python基础-day09
最新推荐文章于 2024-04-26 21:46:10 发布
