基础语法学习Day7
集合
1.什么是集合
集合是容器型数据类型:将{}作为容器的标志,多个元素用逗号隔开:{元素1,元素1,元素1,…}
集合是可变的;无序的:
元素是不可变唯一的
x = {} # {}是空字典
y = set() # 空集合
print(type(y), len(y)) # <class 'set'> 0
# 元素不可变
set1 = {12, "cc", (10, 20)}
# set1={12,"cc",[10,20]} # TypeError: unhashable type: 'list'
# 元素是唯一的
set3 = {1, 2, 3, 5, 2, 3}
print(set3) # {1, 2, 3, 5}
# 集合无序
print({1, 2} == {2, 1}) # True
2.集合的增删改查
(1)查 – 遍历
set4 = {1, 2, 3, 5, 6, 8}
for i in set4:
print(i) # 1 2 3 5 6 8
(2)增
set4 = {1, 2, 3, 5, 6, 8}
# a.集合.add(元素) -- 在集合中添加元素
set4.add(10)
print(set4) # {1, 2, 3, 5, 6, 8, 10}
# b.集合.update(序列) -- 将序列中所有的元素添加到集合中
set4.update("abc") # {1, 2, 3, 5, 6, 8, 10, 'c', 'b', 'a'}
print(set4)
(3)删
a.集合.remove(元素) – 删除指定元素(如果元素不存在会报错)
set4 = {1, 2, 3, 5, 6, 8}
set4.remove(5)
print(set4) # {1, 2, 3, 6, 8}
b.集合.discard(元素) – 删除指定元素(如果元素不存在不会报错)
set4 = {1, 2, 3, 5, 6, 8}
set4.discard(6)
print(set4) # {1, 2, 3, 5, 8}
(4)改 – 无法修改元素
3.数学集合运算
python中的集合支持数学的集合运算:子集(<,>,>=,<=),并集(|),交集(&),差集(-),对称差集(^)
(1)子集
print({10, 20, 30} > {1, 2}) # False(不是比较大小)
print({10, 20} > {10, 20}) # False
print({10, 20, 30} > {10, 20}) # True
# a.集合1>集合2 -- 判断集合2是否是集合1的真子集
# b.集合1>=集合2 -- 判断集合2是否是集合1的子集
(2)并集
set1 = {1, 2, 3}
set2 = {2, 3, 4, 5, 6} # {1, 2, 3, 4, 5, 6}
print(set1 | set2)
(3)交集
print(set1 & set2) # {2, 3}
(4)差集
print(set1 - set2) # {1}
print(set2 - set1) # {4, 5, 6}
(5)对称差集
print(set1 ^ set2) # {1, 4, 5, 6}
字符串和字符
1.什么是字符串
字符串是容器型数据类型;以’‘或者"“或者”"""""或者’’’’’'作为容器的标志,里面的多个字符(任意符号)
不可变的(不支持增删改);有序的(支持下标操作)
字符串的元素:字符串的每个基本单元,字符(任何符号都可以)
# 字符串
# ''''''和""""""引起来的字符串可以直接敲回车换行
str1 = 'cc'
str2 = "cc44"
str3 = """fklgdkmfg"""
str4 = '''jkgfdkm'''
print(type(str1), type(str2), type(str3), type(str4)) # <class 'str'> <class 'str'> <class 'str'> <class 'str'>
2.字符
python没有字符对应的类型只有字符的概念
(1)普通字符:包含所有的符号,例如:数字,字母,中文,各种图形符号等
(2)转义字符:和\结合后具有特殊功能和特殊意义的字符,就是转义字符(转义字符不是python中的概念)
\n – 换行
\t – 一个水平制表符(相当于按一次tab键)
’ – 一个单引号
" – 一个双引号
\ – 一个反斜杠字符
注意:任何一个转义字符的长度都是1
# \u4位的十六进制数 -- 编码字符
str1 = "abc\ncc"
print(str1)
str2 = 'cc\'cc' # cc'cc
print(str2)
str3 = "abc\\ncc"
print(str3) # abc\ncc
str4 = "123\tcc"
print(str4) # 123 cc
str5 = "cc\u4effabc"
print(str5) # cc仿abc
3.阻止转义
python中在字符串的最前面加r/R,可以让这个字符串中所有的转义字符的功能消失
str7 = r"\t123\nabc\\cc\u4eaf"
print(str7) # \t123\nabc\\cc\u4eaf
# str8="\u738B\u56FD\u8D85" # cc
# print(str8)
字符编码
1.计算机数据存储
计算机在存储数据的时候,只能直接存储数字数据,而且以二进制的形式存储数字
位(bit)
1字节(byte) == 8位
1kb == 1024字节
1mb == 1024kb
1Gb == 1024mb
1T == 1024Gb
2.字符编码
(1)字符编码
为了能够让计算机存储字符,我们给每个字符关联一个具体的数字,在需要存储字符的时候就存储字符对应的数字;
每个字符对应的数字就是字符的编码值
(2)编码表
保存字符和数字一一对应关系的表就是字符编码表,常用的字符编码表有两种:ASCII表,Unicode编码表
a.ASCII码表:采用1个字节对128个字符进行编码,其中包括常用的英文符号,数字和字母。
其他数字的编码在字母的前面,大写字母的编码在小写编码的前面,大写字母和小写字母不连续
b.Unicode编码表:万国码,包含了世界上所有国家所有民族的所有语言的符号。前128个字符就是ASCII码表中的字符
其中中文的编码范围:4e00~9fa5
(1)编码字符:\u四位的十六进制数 (这儿的4位的16进制数就是字母的编码值)
str1="a\u0061"
print(str1) # aa
print("\u4e00") # 一
print("\u4e01") # 丁
(2)chr函数
# chr(编码值) -- 获取编码值对应的字符
print(chr(97)) # a
# 练习:打印所有的汉字
for i in range(0x4e00,0x9fa6):
print(chr(i),end=" ")
(3)ord函数
# ord(字符) -- 获取字符的编码值
print(hex(ord("超"))) # 0x8d85
# \u738B\u56FD\u8D85
字符串相关操作
1.获取字符
字符串获取字符和列表获取元素的方法一样
(1)获取单个字符
str1 = "人生苦短,我用Python!"
print(str1[5]) # 我
(2)切片
message = "曾经有一份真挚的爱情摆在我面前,我没有珍惜...."
print(message[1:]) # 经有一份真挚的爱情摆在我面前,我没有珍惜....
print(message[2:10:3]) # 有真爱
print(message[-10:-2:-1]) # ""
(3)遍历
# 练习1: 打印message2中每个字符的编码值
message2 = "你以为我以为就是你以为的"
for i in message2:
print(i)
for i, j in enumerate(message2):
print(hex(ord(j)), i, j)
# 练习2:统计message3中中文字符的个数
message3 = "how are you? 我很好! 你呢?"
count = 0
for i in message3:
if 0x4e00 <= ord(i) <= 0x9fa5:
count = count + 1
print(count)
加法和乘法运算
字符串1 + 字符串2 – 将两个字符串合并产生一个新的字符串
字符串 * N / N * 字符串 – 字符串重复N次产生一个新的字符串
3.比较运算>,<,>=,<=
两个字符串比较大小比较的是第一-对不相等 的字符的编码值大小
判断一个字符是否是小写字母:“a”<=x<=“z”
判断一个字符是否是大写字母: ‘A’ <= x <= ‘Z’
判断一个字符是否是字母: ‘a’ <= x <= ‘z’ or ‘A’ <= x <= ‘Z’
判断一个字符是否是数字字符: ‘0’ <= x <= ‘9’
判断一个字符是否是中文字符: ’ \u4e00’ <= x <= ‘\u9fa5’
print("abc" > "Adfuhio") # True
print("阿123" > "a123") # True
# 练习:取出字符串中所有的小写字母
str1 = "err154,sed亼156JJOIfs"
str2 = ""
str3 = ""
for i in str1:
if "a" <= i <= "z":
str2 = str2 + i
print(str2) # errsedfs
# 练习2:将字符串中所有的小写字母转换成大写字母
for i in str1:
if "a" <= i <= "z":
i = chr(ord(i) - 32)
str3 = str3 + i
print(str3) # ERR154,SED亼156JJOIFS
4. in 和 not in
字符 in 字符串 – 判断字符串中是否有指定的字符
字符串1 in 字符串2 – 判断字符串2中是否包含字符串1