2020-09-29-集合和字符串及作业
day7-集合和字符串
集合
什么是集合
集合是容器型数据类型,将{}作为容器的标志,里面多个元素用逗号隔开:{元素1,元素2…}
集合是可变的(支持增删改查),集合是无序的(不支持下标操作)
元素是不可变类型,唯一的:
1)空集合
x = {} # 空字典 s1 = set() # 空集合 print(type(x),type(s1)) # # <class 'dict'> <class 'set'>
2)元素是不可变的
s2 = {10,'abc',(1,2)} # 报错,列表可变不能作为集合元素 # s3 = {10,'abc',[1,2]} # s3 = {10,'abc',[1,2]} #
3)集合的唯一性
s4 = {1,52,3,52,1} # {1, 3, 52} print(s4)# 集合去重 names = ['张三','李四','张三'] print(list(set(names))) # ['李四', '张三']
4)集合是无序的
print({1,2,3} == {2,3,1}) # True
集合的增删改查
1)查 - 集合只能遍历
# 补充:通过for循环无序序列的时候,都是先将序列转换成列表,然后编列列表 games = {'王者','和平精英','我的世界','贪吃蛇'} for i in games:print(i)
2)增
# 集合.add(元素) - 在集合中添加指定元素 # 集合.update(序列) - 将序列中所有的元素添加到集合中(序列中的元素是不可变的) games = {'王者','和平精英','我的世界','贪吃蛇'} games.add('英雄联盟') print(games) games.update({'开心消消乐','QQ炫舞'}) print(games) # # {'王者', '英雄联盟', 'QQ炫舞', '开心消消乐', '我的世界', '贪吃蛇', '和平精英'}
3)删
# 集合.remove(元素) - 删除集合中指定的元素(元素不存在会报错) # 集合.discard(元素) - 删除集合中指定的元素(元素不存在不会报错) games = {'王者', '英雄联盟', 'QQ炫舞', '开心消消乐', '我的世界', '贪吃蛇', '和平精英'} games.remove('贪吃蛇') print(games) # {'英雄联盟', '开心消消乐', 'QQ炫舞', '和平精英', '我的世界', '王者'}games.discard('我的世界') print(games) # {'和平精英', '英雄联盟', '王者', 'QQ炫舞', '开心消消乐'}
4)改 - 先删除原来的,再添加新的
games.remove('和平精英') games.add('部落冲突') print(games) # # {'开心消消乐', '部落冲突', '英雄联盟', '王者', 'QQ炫舞'}
数学集合运算
python中的集合支持数学中的集合元素:&(交集)、|(并集)、-(差集)、^(对称差集)、> >= < <=(判断子集包含关系)# 集合1 & 集合2 - 求两个集合的公共部分 print({1,5,2}&{5,3,6,99,2,2}) # {2, 5} print({1,5,2,'abc'} & {5,3,6,99,2,2}) # {2, 5} print({1,5,2,'abc'} | {5,3,6,99,2,2}) # {1, 2, 99, 3, 5, 6, 'abc'} print({1,5,2,'abc'} ^ {5,3,6,99,2,2}) # {1, 99, 3, 6, 'abc'}# 2) 集合1 - 集合2 - 集合1中去掉包含集合2中剩下的元素 print({1,5,2,'abc'} - {5,3,6,99,2,2}) # {1, 'abc'}# 3)集合1 > 集合2 - 判断集合2是否是结合1的真子集 # 3)集合1 < 集合2 - 判断集合1是否是结合2的真子集 # 3)集合1 >= 集合2 - 判断集合2是否是结合1的子集 # 3)集合1 <= 集合2 - 判断集合1是否是结合2的子集 print({1,2,3,4} > {1,2}) # Truepython = {'stu1', 'stu2', 'stu4', 'stu6', 'stu7', 'stu10', 'stu11'} h5 = {'stu1', 'stu3', 'stu5', 'stu7', 'stu8', 'stu10'} java = {'stu1', 'stu2', 'stu5', 'stu6', 'stu7', 'stu9', 'stu12'} # a. 求选课学生总共有多少人 s1 = python | h5 | java print('总人数:',len(s1)) # e. 求选了三门学生的学生的数量和对应的名字 s2 = python & h5 & java print('选了三门课的学生:',len(s2)) # b. 求只选了第一个学科的人的数量和对应的名字 s3 = python - h5 - java print('只选了python的学生:',len(s3)) # c. 求只选了一门学科的学生的数量和对应的名字 s4 = python ^ h5 ^ java - s2 print('只选了一门学科的学生:',len(s4)) # d. 求只选了两门学科的学生的数量和对应的名字 s5 = s1 - s4- s2 print('只选了两门学科的学生:',len(s5))
什么是字符串(str)
字符串是容器型数据类型,将‘’、“”、“”“”“”、‘’‘’‘作为容器的标志,里面的每一个基本符号就是字符串的元素
字符串是
不可变
的(不支持增删改);字符串是有序
的(支持下标)元素:引号里面的每个基本单元就是字符串的元素,又叫字符
(一般使用长度为1的字符串来表示字符)
# 空串 s1 = '' s2 = "" s3 = '''''' s4 = """""" print(type(s1)) # # <class 'str'># 字符串是有序的 print('abc' == 'bac') # False
字符
1)转义字符:
在特定的一个或者多个符号前加 \ 让符号具有特殊功能和特殊意义;那么这种带有\ 的字符就是转义字符
转义字符 特殊功能和特殊意义 \n 换行 \t 水平制表符 \’ 表示一个普通的单引号 \" 表示一个普通的双赢号 \\ 表示一个普通反斜杠 注意: 任意一个转义字符的长度都是1 2)普通字符:
除了转义字符以外的字符都是普通字符,普通字符在字符串中表示这个符号本身。
字符的编码
编码:计算机在存储数据的时候只能存数字(存数字二进制补码),为了能够让计算机存储字符,我们给每一个字符都对应一个数字,那么这个对应的数字就是这个字符的编码值
字符编码表 - 记录字符和数字之间一一对应关系的表就是字符编码表
ASCII码表 Unicode编码表 ASCII码表总共有128个字符对应的编码,主要包含的是美国的通用符号其中包括:数字、字母(大写,小写)数字字符在字母字符的前面,大写字母在小写字母的前面,大写字母和小写字母之间有间隔 Unicode编码表包含ASCII码表 中文编码:4e00 - 9fa5 1)编码字符
print('\u4e00','\u9fa5') # # 一 龥
2)chr(编码值) - 获取编码值对应的字符
print(chr(97)) # a print(chr(65)) # A # 打印所有的中文字符 count = 0 for x in range(0x4e00,0x9fa5+1):print(chr(x),end=' ')count += 1if count % 25 == 0:print()
3)ord(字符) - 获取字符对应的编码值
print(ord('杨')) print(bin(ord('杨')),bin(ord('健'))) # 0b110011101101000 0b101000001100101
字符串的相关操作
1.获取字符:字符串获取字符和列表获取元素方法一样
1)获取单个字符
sentence = '死亡如风,常伴吾身!' print(sentence[2]) # 如 print(sentence[-8]) # 如
2)字符切片
sentence2 = 'good good study!day up' print(sentence2[5:-2]) # good study!day print(sentence2[::-1]) # pu yad!yduts doog doog
3)遍历
sentence2 = 'good good study!day up' for x in sentence2:print(x) for index,x in enumerate(sentence2):print(index,x) for index in range(len(sentence2)):print(sentence2[index])
2.加法和乘法
print('abc'+'123') # abc123 print('abc'*2) # abcabc
3.比较大小:两个字符串比较大小是比较第一对不相等的字符编码值的大小
char 判断 ‘a’ <= char <= ‘z’ 小写字母 'A <= char <= ‘Z’ 大写字母 ‘a’ <= char <= ‘z’ or 'A <= char <= ‘Z’ 字母 ‘0’ <= char <= ‘9’ 数字字符 ‘\u4e00’ <= char <= ‘\u9fa5’ 中文范围 print('abc' > 'XKKDK') # True print('abc' > '你好') # False# 练习:输入一个字符串,统计字符串中小写字母的个数 char = input('请输入:') count = 0 for x in char:if 'a' <= x <= 'z':count += 1 print('输入字符串中小写字母个数:',count)# 练习:输入一个字符串,删除字符串中所有的中文字符 char = 'nis离开ss===KLKJLk看看' new_char = '' for x in char:if '\u4e00' <= x <= '\u9fa5':continuenew_char += x print(new_char)
作业
输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7…位上的字符)
例如: 输入**'abcd1234 ’ ** 输出**‘bd24’**
char = 'abcd1234' print(char[1::2]) # bd24
输入用户名,判断用户名是否合法(用户名长度6~10位)
user_name = input('输入用户名:') if 6 <= len(user_name) <= 10:print('合法') else:print('不合法')
输入用户名,判断用户名是否合法(用户名中只能由数字和字母组成)
例如: ‘abc’ — 合法 ‘123’ — 合法 ‘abc123a’ — 合法
for x in user_name:if not (('a' <= x <= 'z' or 'A' <= x <= 'Z') or '0' <= x <= '9'):print('不合法')break else:print('合法')
输入用户名,判断用户名是否合法(用户名必须包含且只能包含数字和字母,并且第一个字符必须是大写字母)
例如: ‘abc’ — 不合法 ‘123’ — 不合法 ‘abc123’ — 不合法 ‘Abc123ahs’ — 合法
if 'A' <= name[0] <= 'Z':have_name = Falsefor c in name:if not ('a' <= c <= 'z' or 'A' <= c <= 'Z' or '0' <= c <= '9'):print('不合法')else:if '0'<= c <='9':have_name = Trueelse:if have_name:print('合法')else:print('不合法') else:print('不合法')
输入一个字符串,将字符串中所有的数字字符取出来产生一个新的字符串
例如:输入**‘abc1shj23kls99+2kkk’** 输出:'123992’
char = 'abc1shj23kls99+2kkk' new_char = '' for i in char:if '0' <= i <= '9':new_char += i print(new_char)
输入一个字符串,将字符串中所有的小写字母变成对应的大写字母输出 (用upper方法和自己写算法两种方式实现)
例如: 输入**‘a2h2klm12+’ ** 输出 'A2H2KLM12+'
char = 'a2h2klm12+' new_char = '' print(char.upper()) # A2H2KLM12+for x in char:temp_char = xif 'a' <= x <= 'z':temp_char = chr(ord(x)-32)new_char += temp_char print(new_char)
输入一个小于1000的数字,产生对应的学号
例如: 输入**‘23’,输出’py1901023’** 输入**‘9’, 输出’py1901009’** 输入**‘123’,输出’py1901123’**
user_char = int(input('请输入:')) print('py1901{:0>3d}'.format(user_char))user_char = int(input('请输入:')) print('py1901'+user_char.zfill(3))
输入一个字符串,统计字符串中非数字字母的字符的个数
例如: 输入**‘anc2+93-sj胡说’** 输出:4 输入**’===’** 输出:3
char = 'anc2+93-sj胡说' count = 0 for i in char:if not ('a' <= i <= 'z' or 'A' <= i <= 'Z' or '0' <= i <= '9'):count += 1 print(count)
输入字符串,将字符串的开头和结尾变成’+’,产生一个新的字符串
例如: 输入字符串**‘abc123’, 输出’+bc12+’**
char = 'abc123' print(f'+{char[1:-1]}+')
输入字符串,获取字符串的中间字符
例如: 输入**‘abc1234’** 输出:‘1’ 输入**‘abc123’** 输出**‘c1’**
char = 'abc123'
if len(char) & 1:print(char[len(char) // 2 -1])
else:print(char[len(char) // 2 - 1],char[len(char) // 2])
- 写程序实现字符串函数find/index的功能(获取字符串1中字符串2第一次出现的位置)
例如: 字符串1为:how are you? Im fine, Thank you! , 字符串2为:you, 打印8
char = 'how are you? Im fine, Thank you!'
print(char.find('you')) # 8
print(char.find('you',50)) # -1 索引超出范围,不会报错返回 -1
print(char.index('you')) # 8
# print(char.index('you',50)) # 索引超出范,会报错
- 获取两个字符串中公共的字符
例如: 字符串1为:abc123, 字符串2为: huak3 , 打印:公共字符有:a3
str1 = 'abc123'
str2 = 'hua1112bk333'
new_str = ''
for x in str1:for i in str2:if x == i and x not in new_str:new_str += x
print(new_str)
2020-09-29-集合和字符串及作业相关推荐
- 9.29集合和字符串
Part1 1.什么是集合 集合是容器型数据类型,将{}作为容器的标志里面多个元素用逗号隔开:{元素1,元素2,元素3,-} 可变的;无序的 元素:不可变的数据;唯一的 1.空集合 x = {} # ...
- 【HDOJ 2020.09.29】一些语法水题ByVJ
By VJ 小抄c版v2 A //上次不是做过了 #include<stdio.h> int main(){char a, b, c, t;while(scanf("%c%c%c ...
- 2020/09/29 鼠标移入 显示二维码或图片 移出隐藏
要模仿的效果 代码 -js -css -js函数 -最终效果 代码块 js let showImg = function (e) {// console.log("show")e. ...
- 2020.09.29重读 原2020.08.04读 MoreFusion
MoreFusion: Multi-object Reasoning for 6D Pose Estimation from Volumetric Fusion 1.背景信息 2.方法 2.1obje ...
- 函授计算机基础知识考试试题,2020年函授本科计算机应用基础课后作业、模拟题及答案.doc...
2020年函授本科计算机应用基础课后作业.模拟题及答案.doc 学 海 无 涯第一章作业14题一.单项选择题(共12小题,每题7分,共84.0分)第1题在计算机中,用文字.图像.语言.情景.现象所表示 ...
- 2022.09.29 周四
2022.09.29 周四 回顾 元组 容器:(数据1,数据2,数据3,--) 不可变的:有序的 元素:没有要求 集合 容器:{数据1,数据2,数据3,--} 可变的:无序的: 元素:不可变的数据:唯 ...
- 【python第四章——序列(列表、元组、字典、集合、字符串、正则)】
python第四章--序列 第四章--序列 4.1列表 4.2元组 4.3字典 4.4集合 4.5字符串(重要) 4.6正则表达式 第四章--序列 概念:序列指一块可存放多个值的连续内存空间,这些值按 ...
- python内置函数可以返回列表元组_Python内置函数()可以返回列表、元组、字典、集合、字符串以及range对象中元素个数....
Python内置函数()可以返回列表.元组.字典.集合.字符串以及range对象中元素个数. 青岛远洋运输有限公司冷聚吉船长被评为全国十佳海员.()A:错B:对 有源逆变是将直流电逆变成其它频率的交流 ...
- python基础语法合集-Python基础语法(四)—列表、元组、字典、集合、字符串
列表 基本概念列表是有序的元素集合,所有元素放在一对中括号中,用逗号隔开,没有长度限制: 列表索引值以0为开始值,-1为从未尾的开始位置. 列表可以使用+操作符进行拼接,使用*表示重复. 当列表元素增 ...
- python定义字典列表_Python基础语法(四)—列表、元组、字典、集合、字符串
列表 基本概念列表是有序的元素集合,所有元素放在一对中括号中,用逗号隔开,没有长度限制: 列表索引值以0为开始值,-1为从未尾的开始位置. 列表可以使用+操作符进行拼接,使用*表示重复. 当列表元素增 ...
最新文章
- bzoj4006: [JLOI2015]管道连接
- c modern approach‘s forteenth chapter‘s study
- Linux下c开发 之 线程通信
- vdbench的作用_vdbench和fio测试磁盘性能的对比总结
- 转型HTML5前端工程师怎样学才能拿高薪?
- Lambda 表达式入门,这篇够了!
- Equal-size partition problem
- C#仿““狗屁不通文章生成器””功能
- vcpkg 详细介绍
- Java 导出Excel 自定义模板
- 常见的15种音频格式
- [译] APT分析报告:06.猖獗的小猫——针对伊朗的APT攻击活动详解
- 算法题|-灯泡开关问题
- 【工大SCIR】AAAI20 基于反向翻译和元学习的低资源神经语义解析
- Java 控制反转和依赖注入模式【翻译】【整理】
- 常用hadoop dfs命令
- 《控方证人》证词怎样被推翻的
- 市场调研-环保型烟花市场现状及未来发展趋势
- Win7上安装Hyper-V管理工具
- 谷歌地球.足不出户让你看遍天下2.3.0修改版无弹窗无影流部分安卓11以上系统不兼容