admin管理员组文章数量:1026989
day7集合和字符串
集合和字符串
1.集合(set)
1.1 集合
集合是容器型数据类型,将{}作为容器型标志,里面的元素用多个逗号隔开:{元素1, 元素2, 元素3, …}
集合是可变的,无序的
元素:数据类型不可变且唯一
# 1)空集合
x = {} # 空字典
y = set() # 空集合# 2)元素是不可变的
s = {10, 'abc', (1, 2)}
print(s) # {10, (1, 2), 'abc'}
# s = {10, 'abc', [1, 2]}
# print(s) TypeError: unhashable type: 'list'# 3)元素是唯一的
s = {10, 20, 10, 30, 40}
print(s) # {40, 10, 20, 30}# 4)集合去重
names = ['张三', '李四', '老王', '李四', '张三', '张三']
names = list(set(names))
print(names) # ['老王', '李四', '张三']# 5)集合是无序的
print({1, 2, 3} == {2, 3, 1}) # True
1.2 集合的增删改查
# 1) 查 - 集合只能遍历(通过for循环遍历无序序列的时候,都是先将序列转换成列表,然后遍历列表)
games = {'QQ炫舞', '扫雷', '贪吃蛇', '我的世界', '侠盗猎车', '红警'}
for x in games:print('x:', x)# 2) 增
# 集合.add(元素) - 在集合中添加指定元素
# 集合.update(序列) - 将序列中所有的元素添加到集合中(序列中的元素是不可变的)
games.add('英雄联盟')
print(games)
games.update({'开心消消乐', '王者荣耀'})
print(games)# 3) 删
# 集合.remove(元素) - 删除指定元素(不存在会报错)
# 集合.discard(元素) - 删除指定元素(不存在不会报错)
games.remove('贪吃蛇')
print(games)
games.discard('我的世界')
print(games)# 4) 改
# 先删除原来的,在添加新的
games.remove('王者荣耀')
games.add('部落冲突')
print(games)
1.3 数学集合运算
# python中的集合支持数学中的集合运算:&(交集)、|(并集)、-(差集)、^(对称差集)、>、<、>=、<=(判断包含关系)
set1 = {1, 2, 3, 4, 5, 6, 7}
set2 = {4, 5, 6, 7, 8, 9, 10}
# 1) 集合1 & 集合2 - 求两个集合的公共部分
# 2) 集合1 | 集合2 - 合并两个集合产生一个新的集合
# 3) 集合1 - 集合2 - 集合1去掉包含在集合2中剩下的元素
# 4) 集合1 ^ 集合2 - 将两个集合合并后去掉公共部分
print(set1 & set2) # {4, 5, 6, 7}
print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
print(set1 - set2) # {1, 2, 3}
print(set1 ^ set2) # {1, 2, 3, 8, 9, 10}# 5)>、<、>=、<= - 判断包含关系
2.字符串(str)
2.1字符串
字符串是容器型数据类型,将’’、" “、’’’ ‘’’、”"" “”"作为容器的标志
字符串是不可变的(不支持增删改);字符串是有序的(支持下标操作)
元素:引号里面的每个基本单元就是字符串的元素,又叫字符(python中只有字符的概念,没有字符对应的类型,
一般是直接使用长度是1的字符串来表示字符)
# 1) 空串
s1 = ''
s2 = ""
s3 = ''''''
s4 = """"""
print(type(s1), type(s2), type(s3), type(s4))
# <class 'str'> <class 'str'> <class 'str'> <class 'str'># 2) ''、"" 与 ''''''、""""""的区别
# ''、"" - 字符串中不能直接换行# 3) 字符串有序
print('abc' == 'cba') # False
2.2 字符
-
转义字符
在特定的一个或者多个字符钱加 \ 让符号具有特殊功能或者特殊意义,那么这种带有 \ 字符就是转义字符:
\n :换行
\t :水平制表符,相当于按一下Tab键
‘、"、\:表示一个普通的’、"、
注意:任何一个转义字符的长度都是1 -
普通字符
除了转义字符意外的字符都是普通字符,普通字符在字符串中表示这个符号本身
包括:汉字、数字、字母、符号、表情符号(🍄❀🐂🐖🐉🐍🦅🐎🐥)等…
# 特殊的转义字符-编码字符:\u四位的十六进制数 - 表示16进制数对应的编码值对应的字符
print('abc\u005a') # abcZ
2.3 字符编码
1)什么是字符编码
计算机在存储数据的时候只能存数字(存的数字二进制补码),为了能够让计算机存储字符,我们给每一个字符都对应一个固定的数字,那么每个字符对应的固定的数字就是这个字符的编码值
2)字符编码表 - 记录字符和数字之间一一对应关系的表就是字符编码表
常见的字符编码表有两种:ASCII码表、Unicode编码表(python采用的是Unicode编码表)
a.ASCII码表
ASCII码表总共有128个字符对应的编码,主要包含的是美国的通用字符,其中包括:英文标点符号、数字字符、字母字符以及其他的一些符号
ASCII码表中,数字字符在字母的前面,大写字母在小写字母前面,大写字母结束后有其他的字符,然后才是小写字母
b.Unicode编码表
Unicode编码表包含ASCII码表
中文编码范围:4e00 ~ 9fa5
# 1)编码字符:\u4位的16进制编码值
print('\u11ef') # ᇯ# 2)chr(编码值) - 获取编码值对应的字符
print(chr(0x4e00)) # 一
print(chr(0x9fa5)) # 龥
# 打印所有的中文字符
count = 0
for x in range(0x4e00, 0x9fa5+1):print(chr(x), end=' ')count += 1if count % 25 == 0:print()# 3)ord(字符) - 获取字符对应的编码值(返回的是十进制数)
print(ord('🐉')) # 128009
print(ord('刘'), ord('浩'), ord('然')) # 21016 28009 28982
print(hex(21016), hex(28009), hex(28982)) # 0x5218 0x6d69 0x7136
3.字符串操作
3.1 获取字符
字符串获取字符的操作和列表获取元素的方法一样
3.2 加法和乘法
print('abc' + '123') # abc123
print('abc' * 3) # abcabcabc
3.3 比较运算
两个字符串比较大小:比较第一对不相等的字符编码值的大小
‘a’ <= ‘char’ <= ‘z’ - 小写字母
‘A’ <= ‘char’ <= ‘Z’ - 大写字母
‘a’ <= ‘char’ <= ‘z’ or ‘A’ <= ‘char’ <= ‘Z’ - 字母
‘0’ <= ‘char’ <= ‘9’ - 数字
‘\u4e00’ <= ‘char’ <= ‘\u9fa5’ - 中文字符
print('abc' > 'XYMN') # True
print('abc' > '你好') # False# 练习:输入一个字符串,统计字符串中小写字母的个数
n = str(input('请输入一个字符串:'))
count = 0
for i in n:if 'a' <= i <= 'z':count += 1
print('小写字母的个数:', count)
day7集合和字符串
集合和字符串
1.集合(set)
1.1 集合
集合是容器型数据类型,将{}作为容器型标志,里面的元素用多个逗号隔开:{元素1, 元素2, 元素3, …}
集合是可变的,无序的
元素:数据类型不可变且唯一
# 1)空集合
x = {} # 空字典
y = set() # 空集合# 2)元素是不可变的
s = {10, 'abc', (1, 2)}
print(s) # {10, (1, 2), 'abc'}
# s = {10, 'abc', [1, 2]}
# print(s) TypeError: unhashable type: 'list'# 3)元素是唯一的
s = {10, 20, 10, 30, 40}
print(s) # {40, 10, 20, 30}# 4)集合去重
names = ['张三', '李四', '老王', '李四', '张三', '张三']
names = list(set(names))
print(names) # ['老王', '李四', '张三']# 5)集合是无序的
print({1, 2, 3} == {2, 3, 1}) # True
1.2 集合的增删改查
# 1) 查 - 集合只能遍历(通过for循环遍历无序序列的时候,都是先将序列转换成列表,然后遍历列表)
games = {'QQ炫舞', '扫雷', '贪吃蛇', '我的世界', '侠盗猎车', '红警'}
for x in games:print('x:', x)# 2) 增
# 集合.add(元素) - 在集合中添加指定元素
# 集合.update(序列) - 将序列中所有的元素添加到集合中(序列中的元素是不可变的)
games.add('英雄联盟')
print(games)
games.update({'开心消消乐', '王者荣耀'})
print(games)# 3) 删
# 集合.remove(元素) - 删除指定元素(不存在会报错)
# 集合.discard(元素) - 删除指定元素(不存在不会报错)
games.remove('贪吃蛇')
print(games)
games.discard('我的世界')
print(games)# 4) 改
# 先删除原来的,在添加新的
games.remove('王者荣耀')
games.add('部落冲突')
print(games)
1.3 数学集合运算
# python中的集合支持数学中的集合运算:&(交集)、|(并集)、-(差集)、^(对称差集)、>、<、>=、<=(判断包含关系)
set1 = {1, 2, 3, 4, 5, 6, 7}
set2 = {4, 5, 6, 7, 8, 9, 10}
# 1) 集合1 & 集合2 - 求两个集合的公共部分
# 2) 集合1 | 集合2 - 合并两个集合产生一个新的集合
# 3) 集合1 - 集合2 - 集合1去掉包含在集合2中剩下的元素
# 4) 集合1 ^ 集合2 - 将两个集合合并后去掉公共部分
print(set1 & set2) # {4, 5, 6, 7}
print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
print(set1 - set2) # {1, 2, 3}
print(set1 ^ set2) # {1, 2, 3, 8, 9, 10}# 5)>、<、>=、<= - 判断包含关系
2.字符串(str)
2.1字符串
字符串是容器型数据类型,将’’、" “、’’’ ‘’’、”"" “”"作为容器的标志
字符串是不可变的(不支持增删改);字符串是有序的(支持下标操作)
元素:引号里面的每个基本单元就是字符串的元素,又叫字符(python中只有字符的概念,没有字符对应的类型,
一般是直接使用长度是1的字符串来表示字符)
# 1) 空串
s1 = ''
s2 = ""
s3 = ''''''
s4 = """"""
print(type(s1), type(s2), type(s3), type(s4))
# <class 'str'> <class 'str'> <class 'str'> <class 'str'># 2) ''、"" 与 ''''''、""""""的区别
# ''、"" - 字符串中不能直接换行# 3) 字符串有序
print('abc' == 'cba') # False
2.2 字符
-
转义字符
在特定的一个或者多个字符钱加 \ 让符号具有特殊功能或者特殊意义,那么这种带有 \ 字符就是转义字符:
\n :换行
\t :水平制表符,相当于按一下Tab键
‘、"、\:表示一个普通的’、"、
注意:任何一个转义字符的长度都是1 -
普通字符
除了转义字符意外的字符都是普通字符,普通字符在字符串中表示这个符号本身
包括:汉字、数字、字母、符号、表情符号(🍄❀🐂🐖🐉🐍🦅🐎🐥)等…
# 特殊的转义字符-编码字符:\u四位的十六进制数 - 表示16进制数对应的编码值对应的字符
print('abc\u005a') # abcZ
2.3 字符编码
1)什么是字符编码
计算机在存储数据的时候只能存数字(存的数字二进制补码),为了能够让计算机存储字符,我们给每一个字符都对应一个固定的数字,那么每个字符对应的固定的数字就是这个字符的编码值
2)字符编码表 - 记录字符和数字之间一一对应关系的表就是字符编码表
常见的字符编码表有两种:ASCII码表、Unicode编码表(python采用的是Unicode编码表)
a.ASCII码表
ASCII码表总共有128个字符对应的编码,主要包含的是美国的通用字符,其中包括:英文标点符号、数字字符、字母字符以及其他的一些符号
ASCII码表中,数字字符在字母的前面,大写字母在小写字母前面,大写字母结束后有其他的字符,然后才是小写字母
b.Unicode编码表
Unicode编码表包含ASCII码表
中文编码范围:4e00 ~ 9fa5
# 1)编码字符:\u4位的16进制编码值
print('\u11ef') # ᇯ# 2)chr(编码值) - 获取编码值对应的字符
print(chr(0x4e00)) # 一
print(chr(0x9fa5)) # 龥
# 打印所有的中文字符
count = 0
for x in range(0x4e00, 0x9fa5+1):print(chr(x), end=' ')count += 1if count % 25 == 0:print()# 3)ord(字符) - 获取字符对应的编码值(返回的是十进制数)
print(ord('🐉')) # 128009
print(ord('刘'), ord('浩'), ord('然')) # 21016 28009 28982
print(hex(21016), hex(28009), hex(28982)) # 0x5218 0x6d69 0x7136
3.字符串操作
3.1 获取字符
字符串获取字符的操作和列表获取元素的方法一样
3.2 加法和乘法
print('abc' + '123') # abc123
print('abc' * 3) # abcabcabc
3.3 比较运算
两个字符串比较大小:比较第一对不相等的字符编码值的大小
‘a’ <= ‘char’ <= ‘z’ - 小写字母
‘A’ <= ‘char’ <= ‘Z’ - 大写字母
‘a’ <= ‘char’ <= ‘z’ or ‘A’ <= ‘char’ <= ‘Z’ - 字母
‘0’ <= ‘char’ <= ‘9’ - 数字
‘\u4e00’ <= ‘char’ <= ‘\u9fa5’ - 中文字符
print('abc' > 'XYMN') # True
print('abc' > '你好') # False# 练习:输入一个字符串,统计字符串中小写字母的个数
n = str(input('请输入一个字符串:'))
count = 0
for i in n:if 'a' <= i <= 'z':count += 1
print('小写字母的个数:', count)
本文标签: day7集合和字符串
版权声明:本文标题:day7集合和字符串 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/IT/1694666483a254813.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论