day 9 集合和字符串
1.集合
1.2什么是集合(set)
-
1)集合是容器型数据类型;将{}作为容器标志,里面多个元素用逗号隔开:{元素1,元素2,元素3,…}
-
2)可变的;无序
-
3)元素的要求:
a.必须是不可变的数据
b.元素是唯一的(自动去重)
1.1空集合
s1 = set()
print(len(s1), type(s1)) # 0 <class 'set'>
#无序
print({10, 20, 30} == {30, 10, 20}) # True
#元素是不可变的数据
s2 = {10, 20, 'abc', (10, 20)}
print(s2) # {'abc', 10, 20, (10, 20)}
# s2 = {10, 20, 'abc', [10, 20]} # 报错,列表是可变的数据
# 元素是唯一的
s4 = {10, 20, 30, 10, 30, 50}
print(s4) # {10, 20, 50, 30}
增删改查
- 1)查——只能遍历
s5 = {10, 20, 50, 80, 90}
for x in s5:
print(x, end=' ') # 80 50 20 90 10
- 2)增
# 集合.add(元素)——将元素添加到集合中
print()
s5.add(100)
print(s5) # {80, 50, 20, 90, 100, 10}
- 3)删
-
- 集合.remove(元素)——删除指定元素,元素不存在报错
- 集合.discard(元素)——删除指定元素,元素不存在不会报错
s5.remove(50)
print(s5) # {80, 20, 90, 100, 10}
- 4)改——没有改的语法,如果要改就先删除旧的再添加新的
2、数学集合运算
python中的集合支持的数学集合运算,并集(|)、交集(&)、差集(-)、对称差集(^)、子集(>=、<=)、真子集(>、<)
2.1并集(|)
- 集合1 | 集合2 ——将两个集合合并产生一个新的集合
print(A | B) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
2.2交集(&)
- 集合1&集合2——获取两个集合公共部分产生一个新的集合
print(A & B) # {8, 5, 6, 7}
2.3 差集(-)
- 集合1-集合2 ——获取集合1中没有包含在集合2中的元素,得到一个新的集合
- 集合2-集合1 ——获取集合2中没有包含在集合1中的元素,得到一个新的集合
print(A - B) # {1, 2, 3, 4}
print(B - A) # 9
2.4 对称差集(^)
- 集合1 ^集合2——两个集合合并去掉公共部分
print(A ^ B) # {1, 2, 3, 4, 9}
2.5子集(>=、<=)、真子集(>、<)
- 看小的是不是大的的子集(真子集)
print({1, 2, 3} > {1, 2}) # True
print({1, 2, 3, 4} < {1, 2, 3, 4, 5}) # True
print({1, 2, 3, 4} > {1, 2, 3, 4, 5}) # False
3.认识字符串
3.1什么是字符串(str)
- 字符串是容器型数据类型;将’’、""、""""""、’’’’’'作为容器的标志,里面的每一个符号就是他的元素
- 字符串不可变;字符串有序
- 字符串元素:引号中的每一个符号都是字符串的元素,又叫字符
- 字符分为普通字符和转义字符两种:
- 普通字符——在字符串中表示本身的
- 转义字符
str1 = 'abc'
str2 = "abc"
str3 = '''abc'''
str4 = """abc"""
print(type(str1), type(str2), type(str3), type(str4)) # <class 'str'> <class 'str'> <class 'str'> <class 'str'>
4.转义字符
4.1、字符——字符串的每个元素
4.1.1 字符分为普通字符和转义字符
- 1)转义字符——在特定的一些符号前加\来表示特殊功能或者特殊意义的符号
- 常用的转义字符:
\n —— 换行(相当于按回车)
\t ——水平制表符(相当于按tab键)
" ——一个普通的双引号
’ ——一个普通的单引号
\ ——一个普通的反斜杠
\u 4位的16进制数——编码字符
# 表示it's ok
print('\tabc\n123')
str1 = "it's ok"
print(str1) # it's ok
str1 = 'it\'s ok'
print(str1) # it's ok
# 表示:I say: "good good study,day day up!"
str2 = "I say: \"good good study,day day up!\" "
print(str2) # I say: "good good study,day day up!"
# 表示C:\用户\test\name\zx\aaa.txt
path = 'C:\用户\\test\\name\zx\\aaa.txt'
print(path) # C:\用户\test\name\zx\aaa.txt
4.1.2 R语法
- 如果在字符串的最前面加R或者r,可以让字符串中所有的转义字符都消失,每个符号都会变成普通字符
str1 = r'\table\n123\'a'
print(str1) # \table\n123\'a
5.字符编码
5.1 计算机存储数据的原理
- 计算机只具备存储数字的能力
5.2字符编码
- 为了能够让计算机存储文字信息,给每一个符号对应了一个固定的数字,每次需要存储文字符号的时候,就存储这个符号对应的数字。
这个数字就是这个符号的编码值
5.3 编码表——保存不同字符对应的编码值的表
5.3.1 ASCII码表
- 有128个美国符号
- 数字——大写字母——小写字母大小写字母之间有间隙
5.3.2 Unicode编码表(python)
- Unicode编码表中包含了ASCII码
- Unicode编码表中包含了世界上所有的国家所有的民族的所有的符号,又叫万国码
- 中文范围:4e00~9fa5
5.4 python对编码值的使用
5.4.1 chr函数
- chr(编码值)——获取数字对应的字符
print(chr(97)) # a
print(chr(0x4e00)) # 一
5.4.2 ord函数
- ord(字符)
5.4.3编码字符
- \u 4位的16进制数——创建一个字符,字符就是4位的16进制数作为编码值对应的字符
6 字符串作为容器的操作
- 字符串不可变,所以只支持查操作
6.1查——获取字符
- 字符串获取字符串和列表获取元素对应的语法一模一样
str1 = 'abc123'
print(str1[2], str1[4]) # c 2
print(str1[1:]) # bc123
print(str1[1:-1:2]) # b1
for x in str1:
print(x, end=' ') # a b c 1 2 3
str2 = '\ta\nmn'
# 获取a
print(str2[1])
str2 = r'\ta\nmn'
print(str2[2])
6.2 in 和not in
- 字符串1 in 字符串2——判断字符串2中是否包含字符串1(判断字符串1是否是字符串2的子串)
print('ab' in 'abc') # True
print('a' in 'abc') # True
print('ac' in 'abc') # False