Python学习笔记09 - 字符串

一、数学集合运算

Python中的集合和数学中的集合是一个东西,并且支持数学集合运算:
交集、并集、差集、对称差集、子集、真子集

A = {1, 2, 3, 4, 5, 6}
B = {4, 5, 6, 7, 8}

1.求交集(&)

  • 求两个集合的公共部分
print(A & B)  # {4, 5, 6}

2.求并集(|)

  • 将两个集合合并成一个集合
print(A | B)  # {1, 2, 3, 4, 5, 6, 7, 8}

3.求差集(-)

  • 去掉一个集合中被包含在另外一个集合中的部分剩下的部分
print(A - B)  # {1, 2, 3}
print(B - A)  # {8, 7}

4.求对称差集(^)

  • 合并两个集合后去掉公共的部分
print(A ^ B)  # {1, 2, 3, 7, 8}

5.子集(>=、<=)和真子集(>、<)

{1, 2, 3}的子集:{}、{1}、{2}、{3}、{1, 2}、{1,3}、{2, 3}、{1, 2, 3}
{1, 2, 3}的真子集:{}、{1}、{2}、{3}、{1, 2}、{1,3}、{2, 3}

  • A > B - 判断B是否是A的真子集
  • A < B - 判断A是否是B的真子集
  • A >= B - 判断B是否是A的子集
  • A <= B - 判断A是否是B的子集

注意:空集合不是{}({}是空字典),空集合是set()

print({100, 200, 300} > {1, 2})  # False
print({100, 200, 300} > set())
print({100, 200, 300} > {100, 300})

练习:用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)

A = {'志尚','风睿', '振荣','嘉慕','宏远','子瑜','英才','鸿博'}
B = {'英逸','翔飞','英才','鸿博','志专','宏远'}
C = {'天成','天空','开霁','文言','光明','巍奕','宏远','文斌','风睿', '振荣'}

a. 求选课学生总共有多少人

r1 = A | B | C
print(len(r1))

b. 求只选了第一个学科的人的数量和对应的名字

r2 = A - B - C
print(len(r2),r2)

e. 求选了三门学科的学生的数量和对应的名字

r3 = (A & B & C)
print(len(r3), r3)

c. 求只选了一门学科的学生的数量和对应的名字

r4 = A ^ B ^ C - r3
print(len(r4),r4)

d. 求只选了两门学科的学生的数量和对应的名字

r5 = r1 - r3 - r4
print(len(r5),r5)

二、字符串和字符

1.什么是字符串(str)

1) 容器型数据类型(一种同时保存多个文字符号的容器);

将引号(既可以是一个引号开头和结尾,也可以是三个引号开头和结尾)作为容器的标志,里面的每个符号就是字符串的元素。

2) 字符串是不可变的;字符串是有序的

3) 字符串中的元素可以是任何文字符号,字符串的元素又叫字符

str1 = 'abc'
str2 = "abc"
str3 = '''abc'''
str4 = """abc"""
print(type(str1),type(str2),type(str3),type(str4))

str = 'mnKN123,.?%$😊换手机'

三个引号开始结尾的字符串可以直接换行

str6 = '''abc
123'''
print(str6)
str7 = 'abc'\
        '123'

str7 = 'abc\n123'
print(str7)

#注释:
def func():
    """注释"""
    """字符串"""

2. 转义字符

字符串中的每个独立的符号就是字符串的元素,又叫字符;字符串中的字符分为两种:普通字符、转义字符

1) 普通字符:

  • 在字符串中表示符号本身的字符就是普通字符 #‘abc’

2) 转义字符:

  • 在特定符号前加\表示特殊意义或者特殊功能的字符就是转义字符
  • 常用的转义字符:
    \n - 换行
    \t - 水平制表符(相当于按了tab键)
    ’ - 普通的单引号
    " - 普通的双引号
    \ - 一个反斜杠

注意:在计算字符串长度的时候,一个转义字符的长度是1

print('abc和123,.')
print('\k\n123')     #\n换行转义字符
print('\a你好\b')
print('\tabc\n123')

it’s me

print('it\'s me')
print("it's me")

I say: “good good study, day day up!”

print("I say:\"good good study, day day up!\"")
print('I say: "good good study, day day up!"')
print('\\abc')
path = 'C:\\name\\abc\\best\\code\\test.py'
print(path)

str1 = '\tabc\n123\\你好'
print(len(str1))     # 11

3. r字符串

  • 在字符串的最前面加r或者R,可以让字符串中所有的转义字符的功能消失(r可以让字符串中所有的字符都变成普通字符)
str2 = r'\tabc\n123\'=\"=\\='
print(str2)

path = r'C:\name\abc\best\code\test.py'   # 表示路径
print(path)

三、字符编码

1. 字符编码

  • 计算机只具备保存数字的能力,为了能够让计算机存储文字符号,给每一个符号对应了一个固定的数字,每次在需要存储文字符号的时候就存储这个符号对应的数字。
  • 每个字符对应的那个固定的数字,就是这个字符的编码值。

2.编码表 - 保存每个文字符号和对应的编码值的表

  • 常见的编码表有两种:ASCII码表、Unicode编码表(Python)

1) ASCII码表: 只有128个字符(全是美国常用的符号)

数字字符在大写字母的前面
大写字母在小写字母前面
字母和数字字符都是连续递增
大写字母和小写字母之间有间隙
(0-48;A-65; a-97)

2) Unicode编码表

  • Unicode编码表中前128个字符就是ASCII码表中的字符
    Unicode编码表中包含了世界上所有的国家所有的民族的所有的语言的符号(万国码)
  • 中文编码范围:4e00 ~ 9fa5

3.编码值在Python中的应用

1)chr函数

  • chr(编码值) - 获取编码值对应的字符
print(chr(97))     # 'a'
print(chr(65))     # 'A'
  • 注意:如果是16进制的编码值,在使用的时候必须加前缀’0x’、‘0X’
print(chr(0x4e00))    # '一'
print(chr(0x9fa5))    # '龥'
  • 打印所有的中文
for x in range(0x4e00,0x9fa5+1):
print(chr(x), end= ' ')

2) ord函数

  • ord(字符) - 获取指定字符对应的编码值
    注意:字符值的是长度为1的字符串
print(ord('a'))    # 97
print(ord('武'))   # 27494

3) 编码字符

  • 在字符串中表示字符有两种方法:直接提供字符、提供编码字符
  • 编码字符:\u4位的16进制编码值
str1 = '一\u4e00'
print(str1)

str2 = 'a=\u0061'
print(str2)

char1 = '块'
print('\u4e00' <= char1 <= '\u9fa5')

四、字符串基本操作

1. 字符串查操作 - 获取字符

  • 字符串获取字符和列表获取元素的语法一样。

1) 查单个: 字符串[下标]

str1 = 'hello world!'
print(str1[0], str1[-1], str1[4])  # h ! o

2)字符串切片

str1 = 'hello world!'
print(str1[1:-1:-2])  # ''
print(str1[1:-1:2])  # el ol
print(str1[1:-3])  # 'ello wor'
print(str1[2:])  # 'llo world'

3) 遍历

str1 = 'hello world!'
for x in str1:
    print(x)

for x in range(len(str1)):
    print(x, str1[x])

2.字符串相关操作

1)字符串1 + 字符串2 - 将两个字符串合并成一个新的字符串

str1 = 'abc'
str2 = 'hello'
str3 = str1 + str2
print(str3)  # 'abchello
  • 字符串的加法运算可以模拟字符串的增删改
str1 = 'abc'
new_str = str1 + 'd'
print(new_str)    # abcd

案例:在字符串每两个字符之间插入一个’+’

str1 = 'abc'
new_str = ''
for x in str1:
    new_str += x + '+'
print(new_str[:-1])   # a+b+c

案例:删除字符串中所有的数字字符

str1 = 'a开始28hsks0sn89就是'
new_str = ''
for x in str1:
    if not '0' <= x <= '9':
        new_str += x
print(new_str)    # a开始hskssn就是

案例:将字符串中所有的数字字符改成’*’

str1 = 'a开始28hsks0sn89就是'
new_str = ''
for x in str1:
    if '0' <= x <= '9':
        new_str += '*'
    else:
        new_str += x
print(new_str)   # a开始**hsks*sn**就是

2)字符串 * N - 字符串重复N次产生一个新的字符串

str1 = 'abc'
print(str1 * 3)    # abcabcabc

3)in 和 not in

  • 字符串1 in 字符串2 - 判断字符串1是否是字符串2的字串(判断字符串2中是痘包含字符串1)
print('a' in 'abc')     # True
print('ab' in 'abc')    # True
print('ac' in 'abc')    # False

4)比较运算

  • 两个字符串比较大小比较的是第一对不相等的字符的编码值的大小

  • 比较运算的应用: - 判断字符的性质
    判断x是否是数字字符: ‘0’ <= x <= ‘9’
    判断x是否是小写字母:‘a’<= x <= ‘z’
    判断x是否是大写字母:‘A’<= x <= ‘Z’
    判断x是否是字母: ‘a’<= x <= ‘z’ or ‘A’<= x <= ‘Z’
    判断x是否是中文:‘\u4e00’ <= x <= ‘\u9fa5’

print('abc' == 'abc')   # True
print('abc' == 'bac')   # False

print('abc'>'你n')     # False
print('zbc'>'mn')      # True
print('Zbc'>'mn')      # False

3.字符串相关函数

1)len(字符串) - 统计字符串中字符的个数

2)str(数据) - 将指定的数据转换成字符串(所有的数据都可以转换成字符串,转换的时候在数据打印值的外面加引号)

# str(100)  -  '100'
list1  =  [10, 20, 30]
print(list1)       # [10, 20, 30]
# str(list1)    -   '[10, 20, 30]'

list2 = ["abc", 100]
print(list2)     # ['abc',100]
# str(list2)    -   "['abc',100]"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值