集合/字符串

集合与字符串

集合

定义:

集合:
与列表、字典一样都属于可变类型的序列
集合中的元素不能够重复
集合中的元素是无序的

集合的创建

第一种创建方式

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码值转变为对应的字符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值