集合
定义:
集合:
与列表、字典一样都属于可变类型的序列
集合中的元素不能够重复
集合中的元素是无序的
集合的创建
第一种创建方式
s={2,5,6,1,2,8,5} # {1, 2, 5, 6, 8}
print(s)
第二种创建方式
s1=set(range(6))
print(s1,type(s1))
第三种创建方式
s2=set([1,2,3,4,5,6])
print(s2,type(s2))
print(set('python'))
定义空集合
s1=set()
print(s1) # set()
集合的相关操作
in / not in(判断操作)
s1={10,20,30,40,50,60}
print(10 in s1) # True
print(90 in s1) # False
print(89 not in s1) # True
add(一次添加一个元素)
s1={10,20,30,40,50,60}
s1.add(56)
print(s1) # {50, 56, 20, 40, 10, 60, 30}
update(一次添加至少一个元素)
s1={50, 56, 20, 40, 10, 60, 30}
s1.update({19,49,39})
print(s1) # {39, 40, 10, 49, 50, 19, 20, 56, 60, 30}
s1.update([57,43])
print(s1) # {39, 40, 10, 43, 49, 50, 19, 20, 56, 57, 60, 30}
集合元素删除操作
remove(一次删除一个元素,不抛异常)
s1={39, 40, 10, 43, 49, 50, 19, 20, 56, 57, 60, 30}
s1.remove(10)
print(s1) # {39, 40, 43, 49, 50, 19, 20, 56, 57, 60, 30}
discard(一次删除一个元素,不抛出异常)
s1={39, 40, 43, 49, 50, 19, 20, 56, 57, 60, 30}
s1.discard(870)
print(s1) # 870不存在,删除时不会抛出异常
pop() 删除一个任意元素
s1={39, 40, 43, 49, 50, 19, 20, 56, 57, 60, 30}
s1.pop()
print(s1) # {40, 43, 49, 50, 19, 20, 56, 57, 60, 30}
clear()清空集合
s1.clear()
print(s1) # set()
集合之间的关系
集合二是否相等(元素相同)
s1={10,20,30}
s2={30,20,10}
print(s1==s2) # True
print(s1!=s2) # False
一个集合是否是另一个集合的子集issubset
s1={10,20,30,40,50}
s2={10,20,30}
s3={10,78}
print(s2.issubset(s1)) # 是子集 True
print(s3.issubset(s1)) # 不是子集 False
一个集合是否是另一个集合的超集issuperset
s1={10,20,30,40,50}
s2={10,20,30}
s3={10,78}
print(s1.issuperset(s2)) # 是超集 True
print(s1.issuperset(s3)) # 不是超集 False
两个集合是否含有交集isdisjoint
s1={10,20,30,40,50}
s2={10,20,30}
print(s2.isdisjoint(s1)) # False:有交集
s4={100,200,300}
print(s2.isdisjoint(s4)) # True:没有交集
交集intersection
s1={10,20,30,40}
s2={20,30,40,50}
print(s1.intersection(s2)) # 交集 {40,20,30}
print(s1 & s2) # 交集 {40,20,30}
并集union
s1={10,20,30,40}
s2={20,30,40,50}
print(s1.union(s2))# {40, 10, 50, 20, 30}
print(s1|s2) # union与|等价 {40, 10, 50, 20, 30}
print(s1) # 不变
print(s2) # 不变
差集difference
s1={10,20,30,40}
s2={20,30,40,50}
print(s1.difference(s2)) # {10}
print(s1) # 不变
print(s2) # 不变
对称差集
print(s1.symmetric_difference(s2)) # {10, 50}
print(s1^s2) # {10, 50}
集合生成式
s={i*i for i in range(6)} # {0, 1, 4, 9, 16, 25}
print(s)
字符串
介绍
# 字符串是基本数据类型,是一个不可变的序列
# 字符串的驻留机制
非标识符的字符串不会出现驻留机制
编译时,涉及运行会开新的空间
-5-256
字符串驻留机制,内容相同,只创建一份
a='Python'
b="Python"
c="""Python"""
print(a,id(a))
print(b,id(b))
print(c,id(c))
字符串查询操作
index查找子串第一次出现的位置
不存在则抛出异常
s='hello,hello'
print(s.index('lo')) #3
rindex查找最后一次出现的位置
不存在则抛出异常
s='hello,hello'
print(s.rindex('lo')) # 9
find查找子串第一次出现位置
不存在返回-1
print(s.find('lo')) #3
rfind查找子串最后一次出现位置
不存在返回-1
print(s.rfind('lo')) # 9
字符串中大小写字母转换
upper()将所有字母转换成大写
注意:会产生新的对象
s='hello,python'
a=s.upper()
print(a,id(a)) # HELLO,PYTHON 2002018744688
lower()将所有字母转换成小写
会产生新的对象
s1='Hello,Python'
print(s1.lower(),id(s1.lower())) # hello,python 2002018792816
swapcase 小写转大写,大写转小写
s2='hello,Python'
print(s2.swapcase()) # HELLO,pYTHON
title每个单词首字母大写,其他小写
会产生新的对象
s2='hello,Python'
print(s2.title()) # Hello,Python
字符串内容对齐操作
center():两个参数,中间对齐
第一个参数:指定宽度
第二个参数:填充符
中间对齐
s='hello,python'
print(s.center(20,'*')) # ****hello,python****
ljust():两个参数,左对齐
第一个参数:指定宽度
第二个参数:填充符
左对齐,默认的空格
s='hello,python'
print(s.ljust(20,'*')) # hello,python********
rjust():俩参数,右对齐
s='hello,python'
print(s.rjust(20,'&')) # &&&&&&&&hello,python
zfill():一个参数,使用0填充,右对齐
s='hello,python'
print(s.center(20,'*')) # 00000000hello,python
字符串切分操作
split()
参数sep指定分隔符
参数maxsplit指定最大分割次数
s1='hello,world,haha'
print(s1.split(sep=','))
print(s1.split(sep=',',maxsplit=1))
rsplit()
从字符串右侧开始分割
sep指定分隔符
s2='hello world python'
print(s2.rsplit()) # ['hello', 'world', 'python']
字符串判断操作
isidentifier()判断是否是标识符
s="hello,python"
print(s.isidentifier()) # False
isspace()判断是否由空白符组成
空白符(回车,空格,tap)
print('\t'.isspace()) # True
isalpha:判断是否由字母组成
print('abc'.isalpha()) # True
isdecimal:判断是否由十进制数字组成
print('123'.isdecimal()) # True
isnumeric:判读三是否全由数字组成
print('abc3'.isalnum()) # True
isalnum:全部由数字和字母组成
print('abc张三123'.isalnum()) # True
字符串的替换和连接操作
replace()三个参数
s="hello,Python"
print(s.replace('Python','Java')) # hello,Java
s1='hello,python,python,python'
print(s1.replace('python','java',2)) # hello,java,java,python
join():将列表和元组种的元素连接成字符串
list1=['hello','java','python']
print('|'.join(list1)) # hello|java|python
print(''.join(list1)) # hellojavapython
t1=('hello','java','python')
print(''.join(t1)) # hellojavapython
print('*'.join('nihao')) # n*i*h*a*o
字符串比较
print('apple'>'app')
print(ord('a'))
print(chr(789))
ord转变为对应的ascii码值,chr将ascii码值转变为对应的字符