day-9 字符串

一.数学集合运算

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

1.求交集:-&-求两个集合的公共部分

# A & B
A = {1, 2, 3, 4, 5, 6}
B = {4, 5, 6, 7, 8}
print(A & B)    # {4, 5, 6}

2.求并集(|) - 将两个集合合并成一个集合

print(A | B)    # {1, 2, 3, 4, 5, 6, 7, 8}

求差集(-) - 去点一个集合中被包含在另个一集合中的部分剩下的部分

print(A - B)    # {1, 2, 3}
print(B - A)    # {8, 7}

4.求对称差集(^) -合并两个集合去掉公共部分

print(A ^ B)    # {1, 2, 3, 7, 8}

5.子集

{1, 2 ,3}的子集:set(),{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}

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

注意:set())——空集

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

print({100, 200, 300} > {1, 2})  # False
print({100, 200, 300} > {1, 2})  # False
# print({100, 200, 300} > {})   # 大括号是空字典——————报错
print({100, 200, 300} > set())  # set()——空集
print({100, 200, 300} > {100, 300})  # True

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

a = {'s1', 's2', 's3', 's4', 's5'}
b = {'s2', 's1', 's4'}
c = {'s1'}
# 练习:用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)
# a. 求选课学生总共有多少人
print(len(a | b | c))
# b. 求只选了第一个学科的人的数量和对应的名字
print(len(a))
print([x for x in a])
# e. 求选了三门学科的学生的数量和对应的名字
print(len(a & b & c))
print([x for x in a & b & c])
# c. 求只选了一门学科的学生的数量和对应的名字
print(len(a - b - c))
print([x for x in a - b - c])
# d. 求只选了两门学科的学生的数量和对应的名字
print(len((a & b - c) | (a & c - b) | (c & b - a)))
print([x for x in (a & b - c) | (a & c - b) | (c & b - a)])

二.字符串

1.什么是字符串(str)

1.容器型数据类型(一种同时保存多个文字符号的容器);将引号(既可以一个引号开头结尾,也可以三个引号开头结尾)作为容器的标志
里面每个符号就是字符串的元素
2.字符串是不可变的;字符串是有序的
2.字符串中的元素里可以是任何文字符号,其中元素又叫字符

str1 = 'abc'
str2 = "abc"
str3 = '''acb'''
print(type(str1), type(str2), type(str3))
str4 = 'sadfa不撒大&*%#¥大大的'

三个引号的字符串可以换行

tr6 = '''abc
123
'''
print(str6)
# 换行
str7 = 'abc\n123'
print(str7)

空串

str8 = ''

2.转义字符

字符串中的每个独立符号就是字符串的元素,又叫字符,字符串中的字符分为两种:普通字符,转义字符
1.普通字符:在字符串中表示符号本身的字符就是普通字符
2.转义字符:在特定符号前加\表示特殊意义的字符就是转义字符-一个转义字符的长度为1
常用转义字符:
\n - 换行
\t - 水平制表符
’ - 普通单引号
" - 普通双引号
\ - 一个反斜杠 - 文件路径反斜杠区分,在字符串的最前面加r也可解决

print('abc和123')
print('\k')
print('\k\n123')
print('\twww\n123')
print(len('\twww\n123'))
# it‘s me
# print('it's me')  -报错
print('it\'s me')
print("it's me")

3.r字符串

在字符串的最前面加r或者R,可以让所有字符串中所有的转义字符功能消失(r可以让字符串中所有字符都变成普通字符)

str9 = r'\t121\n122\a565\b'
print(str9)

三.字符编码

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))

注意:如果是16进制的编码值,在使用的时候必须加前缀’0x‘,’0X‘

print(chr(0x4e00)) # ’一‘

打印所有的中文字符

for x in range(0x4e00, 0x9fa5+1):print(chr(x), end=' ')
for x in range(0x2800, 0x4DFF+1):print(chr(x), end=' ')

2)ord函数

ord(字符) - 获取指点字符对应的编码值

注意:字符指的是长度为1的字符串

print(ord('a'))
print(ord('范'))
print(ord('逸'))
print(ord('凡'))

3)编码字符

在字符串中表示字符有两种方法:直接提供支付,提供编码字符

# 编码字符
str1 = '一\u4e00'
print(str1)
str2 = 'a=\u0061'
print(str2)

判断是否为中文字符

char = '块'
print('\u4e00' <= char <= '\u9fa5')  #True  '\u4e00' 第一个中文字符 最后一个'\u9fa5'
str8 = '第二个盲文符号:\u28ee'
print(str8)

四.字符串的基本操作

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

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

1)查单个:字符串【下标】

str1 = 'hello'
print(str1[0])

2)字符串切片

str1 = 'helloworld!'
print(str1[1:-1:-2])   # ''
print(str1[1:-1:2])    # 'el'
# print(str[1:-3])
print(str1[2:])

3)遍历

str1 = 'helloworld!'
for x in str1:print(x)
# =获取字符串每个元素及其对应的下标
for x in range(len(str1)):print(x, str1[x])

2.字符串相关操作

1)字符串1+字符串2 ——将两个字符串合并成一个新的字符串
字符串的加法运算可以模拟字符串的增删改

stra = '123'
strb = 'hello'
strc = stra + strb
print(strc)str1 = 'abc'
new_str = str1 + 'd'
print(new_str)

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

str1 = 'abc'
print(str1*3)

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')  # Falseprint('abc' > 'mn')   # False
print('zbc' > 'mn')   # True
print('Zbc' > 'mn')   # False

3.字符串相关函数

1)len(字符串) - 统计字符串中字符的个数
2)str(数据) - 将指定数据转换成字符串(所有数据都可转换字符串,在外加‘’引号)

print(str(100))
list1 = [100, 200]
print(str(list1))  # '[100, 200]'
list2 = ["abc", 100]
print(str(list2))   #['abc', 100]
str(list2)          #"['abc', 100]"
# 案例:在字符串每两个字符之间插入一个'+'
str1 = 'abc'
new_str = ''
for x in str1:new_str += x + '+'
print(new_str[:-1])# 案例:删除字符串中所有的数字字符
str1 = 'a开始28hsks0sn89就是'
new_str = ''
for x in str1:if not '0' <= x <= '9':new_str += x
print(new_str)# 案例:将字符串中所有的数字字符改成'*'
str1 = 'a开始28hsks0sn89就是'
new_str = ''
for x in str1:if '0' <= x <= '9':new_str += '*'else:new_str += x
print(new_str)

day-9 字符串笔记相关推荐

  1. Python 字符串笔记(转自木木)

    使用字符串 Table of Contents 1 基本字符串操作 2 字符串格式化:精简版 2.1 用字符串格式化操作符 2.2 用string的Template格式化字符串 3 字符串格式化:完整 ...

  2. C语言数组、字符与字符串笔记

    数组/字符/字符串 数组 一维数组的定义 一维数组的初始化 字符串 字符数组 字符数组的初始化 1.使用字符常量的初始化列表对数组初始化 2.使用字符串常量直接对数组初始化 字符指针 指针 字符指针与 ...

  3. C#编程-39:字符和字符串笔记

    1.字符char char.IsLetter('a') char.IsDigit('1') char.IsLetterOrDigit('1') char.IsLower('a') char.IsUpp ...

  4. 疯狂Python讲义之变量和简单类型--深入使用字符串笔记4

    目录 1. 转义字符 2. 字符串格式化 3. 序列相关方法 4. 大小写相关方法 5. 查找.替换相关方法 6. 分割.连接方法 1. 转义字符 在字符串中可以使用反斜线进行转义:如果字符串本身包含 ...

  5. 字符串笔记(C Primer Plus)

    1.字符串数组 有一个字符串数组是很方便的,这样就可以使用下标来访问多个不同的字符串. 下面是一个例子: const char *mytal[5] = { "Adding numbers s ...

  6. Thinking in java 第13章 字符串 笔记+习题

    Thinking in java 第13章 字符串 学习目录 13.1 不可变String 13.2 重载"+"与StringBuilder 1. 用于String的"+ ...

  7. intval() 与 floatval() 解析字符串---笔记

    $a = '2e3'; echo intval($a); //2 echo "<br/>"; echo floatval($a); //2000 官方解释: It se ...

  8. python入门之字符串_03

    # 字符串 -------笔记------ # 1.字符串的特性:不可修改,有序的 # 2.字符串的定义: # 双引号和单引号都可以定义 # 三双引号和三单引号都可以定义 # 字符串里面有空格也算是字 ...

  9. 【狂神说】前端进阶串讲笔记总结

    [狂神说]视频学习--前端串讲 这个系列使得我能在 Html + css + js 的基础上,实现对高级框架和工具的知识过渡,特此积累总结. 参考笔记:https://www.kuangstudy.c ...

  10. 分享一下我研究SQLSERVER以来收集的笔记

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 分享一下 ...

最新文章

  1. centosx64 6.3安装视频组件
  2. Android在ListView滑动数据混乱
  3. 我们如何衡量一个微服务实施的成功
  4. Eclipse 里找不到 Servers 面板的原因和处理办法
  5. 为什么借钱要上央行征信?
  6. 阿里云何川:开放兼容的云,计算巢帮助合作伙伴云化升级
  7. Java解决CAS机制中ABA问题的方案
  8. [CTO札记]谁在使用SNS
  9. Kafka Producer生产者原理
  10. Mysql表的约束设计和关联关系设计
  11. 那么问题来了,什么才是正确的?我们就是为问题而生的
  12. day04 JavaScript高级程序设计 阅读总结
  13. 考研计算机专业课961考什么,北航计算机考研(961)经验谈
  14. [Luogu P4630] [BZOJ 5463] [APIO2018] Duathlon 铁人两项
  15. 计算机网络面试题汇总
  16. 门宝——门厂快速录单系统|木门录单软件
  17. python爬虫捕鱼网站_古法捕鱼,千年绝技
  18. springMVC+jquery实现图片上传
  19. spark系列11:RDD之间的依赖关系,窄依赖和宽依赖
  20. 古典问题(兔生兔问题)就是著名的斐波那契数列

热门文章

  1. 惠惠软件|CSDN笔耕不辍Lv1
  2. iOS多线程之GCD
  3. 自己怎么制作GIF表情包 QQ动态图如何制作
  4. 读《乔布斯的魔力演讲》
  5. java activity_java中的Activity
  6. CSS中的em运用详解,1em等于多少像素?
  7. h3c交换机配置nat_史上最详细H3C路由器NAT典型配置案例
  8. 一个技术工作者的四大核心价值理念
  9. 百度推出新版团购导航 对团购导航造成冲击
  10. SharePoint 网站的导入导出