python100day - 07day-集合、字符串和字符
集合
1.什么是集合(set):
1)集合是容器型类型,将{}作为容器的标志,里面多个元素用逗号隔开:{元素1, 元素2, 元素3, …}
2)集合是可变的;无序的
3)元素:不可变的数据;唯一的
空集合
x = { }
s1 = set ( )
print ( type ( x) , type ( s1) )
print ( s1)
元素是不可变的
s2 = { 10 , 'abc' , ( 1 , 2 ) }
print ( s2)
s3 = { 10 , 'abc' , [ 1 , 2 ] }
print ( s3)
元素是唯一的
s4 = { 10 , 20 , 30 , 10 , 10 }
print ( s4)
names = [ '张三' , '李四' , '老王' , '张三' , '张三' ]
names = list ( set ( names) )
print ( names)
nums = [ 2 , 30 , 4 , 10 , 10 , 2 , 50 , 6 , 30 ]
nums = list ( srt( nums) )
print ( nums)
集合是无序的
print ( { 1 , 2 , 3 } == { 3 , 1 , 2 } )
2.集合的增删改查
查 - 集合只能遍历 补充:通过for循环遍历无序序列的时候,都是先将序列转换成列表,然后在遍历列表
games = { 'QQ炫舞' , '扫雷' , '贪吃蛇' , '我的世界' , '侠盗猎车' , '红警' }
for x in games:
print ( 'x' , x)
增
1.集合.add(元素) - 在集合中添加指定元素
2.集合.update(序列) - 将序列所有的元素添加到集合中
games. add( '英雄联盟' )
print ( games)
games. update( { '开心消消乐' , '王者荣耀' } )
print ( games)
games. update( 'abc' )
print ( games)
删
集合.remove(元素) - 删除集合中指定的元素(元素不存在会报错)
集合.discard(元素) - 删除集合中指定的元素(元素不存在不会报错)
games = { 'QQ炫舞' , '扫雷' , '贪吃蛇' , '我的世界' , '侠盗猎车' , '红警' }
games. remove( '贪吃蛇' )
print ( games)
games. discard( '我的世界' )
print ( games)
改 - 先删除原来的,再添加新的
games = { 'QQ炫舞' , '扫雷' , '贪吃蛇' , '我的世界' , '侠盗列车' , '红警' }
games. remove( '扫雷' )
games. add( '部落冲突' )
print ( games)
3.数学集合运算
python中的集合支持数学中的集合运算:&(交集)、|(并集)、-(差集)、^(对称差集)、>、<、>=、<=(判断包含关系)
1)集合1 & 集合2 - 求两个集合的公共部分
set1 = { 1 , 2 , 3 , 4 , 5 , 6 , 7 }
set2 = { 4 , 5 , 6 , 7 , 8 , 9 , 10 }
print ( set1 & set2)
2)集合1 | 集合2 - 合并两个集合产生一个新的集合
print ( set1 | set2)
3)集合1 - 集合2 - 集合1去掉包含在集合2中剩下的元素
print ( set1 - set2)
print ( set2 - set1)
4)集合1 ^ 集合2 - 将两个集合合并后去掉公共部分
print ( set1 ^ set2)
5)
集合1 > 集合2 - 判断集合2是否是集合1的真子集
集合1 < 集合2 - 判断集合1是否是集合2的真子集
集合1 >= 集合2 - 判断集合2是否是集合1的子集
集合1 <= 集合2 - 判断集合1是否是集合2的子集
print ( { 1 , 2 , 3 , 4 } > { 1 , 2 } )
print ( { 1 , 2 , 3 , 4 } > { 1 , 2 , 3 , 4 } )
print ( { 1 , 2 , 3 , 4 } >= { 1 , 2 , 3 , 4 } )
print ( { 1 , 2 , 3 , 4 } >= { 1 , 2 } )
print ( { 100 , 200 , 300 } > { 1 , 2 } )
字符串和字符:
1.什么是字符串:
字符串是容器型数据类型,将’’、""、’’’’’’、""""""作为容器的标志,里面的每一个基本符号就是字符串的元素
字符串是不可变的(不支持增删改);字符串是有序的(支持下标操作)
元素:引号里面的每个基本单元就是字符串的元素,又叫字符(python中只有字符概念没有字符对应类型,一般直接使用长度是1的字符串来表示)
1)空串
s1 = ''
s2 = ""
s3 = '' '' ''
s4 = "" "" ""
print ( s1, s2, s3, s4)
print ( type ( s1) , type ( s2) , type ( s3) , type ( s4) )
2)’’、""、’’’’’’、"""""“的区别: ‘’、”" - 字符串中不能直接换行
s5 = 'sjjf首都航空的'
s6 = '''
床前明月光,
疑是地上霜,
举头望明月,
低头思故乡。
'''
print ( s5)
print ( s6)
3)字符串有序
print ( 'abc' == 'cba' )
2.字符
字符分为普通字符和转义字符两种:
1)转义字符:在特定的一个或者多个符号前加 \ 让符号具有特殊功能或者特殊意义。那么这种带有
\ 字符就是转义字符:
\n - 换行
\t - 水平制表符(相当于按一下tab键)
反斜杠加一个普通的单引号 - 表示一个普通的单引号
反斜杠加一个普通的双引号 - 表示一个普通的双引号
两个反斜杠 - 表示一个普通的反斜杠
注意:任意一个转义字符的长度都是1
2)普通除了转义字符以外的都是普通字符,普通字符在字符串中表示这个符号本身,包括:汉字、数字、字母、符号、表情符号等…
特殊的转义字符-编码字符:\u四位的十六进制数(09/a f) - 表示16进制数对应的编码值对应的字符
str1 = 'abc\n1"23'
print ( str1)
str2 = "hello' w\"orld"
print ( str2)
str3 = '123\\n456'
print ( str3)
str4 = 'abc\u1234'
print ( str4)
str5 = 'abc\u4fa5'
print ( str5)
3.编码字符
1)什么是字符:编码计算机在存储数据的时候只能存数字(存的数字是二进制补码),为了能够让计算机存储字符,我们给每一个字符都对应一个固定的数字,那么每个字符对应的固定数字就是这个字符的编码值
2)字符编码表 - 记录字符和数字之间一一对应关系的表就是字符编码表常见的字符编码表有两种:ASCII码表、Unicode编码表(python采用的是Unicode编码表)
a.ASCII码表 - ASCII总共有128个字符对应的编码,主要包含的是美国的通用符号其中包括:英文标点符号、数字符号、字母符号以及其他的一些符号ASCII码表中,数字字符在字母的前面,大写字母在小写字母的前面,大写字母和小写字母之间有间接
b.Unicode编码表 - Unicode编码表包含ASCII码表中文编程范围:4e00 ~ 9fa5
编码字符: \u4位十六进制的编码值
print ( '\u1100' )
print ( '\u11ef' )
print ( '\u0f00\u0f03' )
print ( '\u28a0 \u28ff' )
print ( '\u4e00 \u9fa5 \u5af1' )
chr(编码值) - 获取编码值对应的字符
print ( chr ( 0x4e00 ) , chr ( 19968 ) )
print ( chr ( 97 ) )
ord(字符) - 获取字符对应的编码值(返回的是十进制数)
print ( ord ( '梁' ) , ord ( '占' ) , ord ( '强' ) )
print ( hex ( 26753 ) , hex ( 21344 ) , hex ( 24378 ) )
获取字符:
字符串获取字符和列表获取元素的方法一模一样
1)获取字符
sentence = '死亡如风,常伴吾身!'
print ( sentence[ 2 ] , sentence[ - 8 ] )
2)字符串切片
sentence2 = 'good good study! day day up!'
print ( sentence2[ 5 : - 2 ] )
print ( sentence2[ 1 : - 2 : - 2 ] )
print ( sentence2[ : : - 1 ] )
3)遍历
for x in sentence2:
print ( 'x:' , x)
for index, item in enumerate ( sentence2) :
print ( index, item)
for x in range ( len ( sentence2) ) :
print ( x, sentence2[ x] )
加法和乘法
print ( 'abc' + '123' )
print ( 'you see you!' + 'one day day!' )
print ( 'abc' * 3 )
比较大小
两个字符串比较大小:比较第一对不相等的字符编码值的大小
'''
char
'a' <= char <= 'z' - 小写字母
'A' <= char <= 'Z' - 大写字母
'a' <= char <= 'z' or 'A' <= char <= 'Z'
'0' <= char <= '9' - 数字
'\u4e00' <= char <= '\u9fa5' - 中文字符
'''
print ( 'abc' > 'XYZMN' )
print ( 'abc' > '你好' )
练习1:输入一个字符串,统计字符串中小写字母的个数
x1 = '键盘敲烂,月薪过万,aoligei'
count = 0
for x in x1:
if 'a' <= x <= 'z' :
count += 1
print ( count)
练习: 输入一个字符串,删除字符串中所有的中文字符
h2 = 'nis耗时ss==AHJ看'
h3 = ''
for x in h2:
if '\u4e00' <= x <= '\u9fa5' :
continue
h3 += x
print ( h3)