Python 全栈开发二 python基础 字符串 字典 集合
一.字符串
1,在python中,字符串是最为常见的数据类型,一般情况下用引号来创建字符串。
>>ch = "wallace"
>>ch1 = 'wallace'
>>ch2 = '''
wallace
wallace
wallace
'''
#以上三种引号都可以定义一字符串,
#三引号定义的字符串可以换行
注意:字符串是不可变的数据类型,关于可变与不可变将会在后文解释。
2,转义字符
在python中有一些字符是有转义功能的,一般情况下是指\加上一些字符,在使用的时候需要注意:
转义字符 | 描述 |
---|---|
\(在行尾时) | 续行符 |
\\ | 反斜杠符号 |
\' | 单引号 |
\" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\e | 转义 |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数,yy代表的字符,例如:\o12代表换行 |
\xyy | 十六进制数,yy代表的字符,例如:\x0a代表换行 |
\other | 其它的字符以普通格式输出 |
例如:
>>print('a\na') #这里的\n表示的就是换行
a
a
3.字符串的常用方法:
>>st = ' Wallace waNg '
>>st2 = 'wallace 123'
>>st3 = ''
>>print(st.index('w'))#根据提供的元素返回索引位置
11
>>print(st.count('a'))#返回对应元素的个数
3
>>print(st.isdigit()) #只有全部是数字的时候才返回Ture
Flase
>>print(st2.isdigit())#判断是否全为数字组成的字符串
Flase
>>print(st3.isdigit())
True
>>print('{}{}{}'.format(st,st2,st3)) #字符串拼接
Wallace waNg wallace 123123
>>print('{n},{n1},{n2}'.format(n = st,n1 = st3,n2 = st2))
Wallace waNg ,123,wallace 123
>>print(' '.join((st,st2,st3))) #字符串拼接,可以用一些符号进行拼接
Wallace waNg wallace 123 123
>>print(st.ljust(50,'')) #给字符串设置宽度,并且可以在一边添加字符 rjust
Wallace waNg 11111111111111111111111111111111
>>print(st.center(50,'*')) #设置宽度,并对字符串居中
**************** Wallace waNg ****************
>>print(st.replace('a','b',1)) #替换字符,可以选择替换次数
Wbllace waNg
>>print(st.strip()) #去除字符串两边的空格和换行 rstrip(), lstrip()
Wallace waNg
>>print(st.find('a')) # 返回字符的索引位置
4
>>print(st.endswith('a')) #判断是否为该字符结尾 startswith 开头
Flase
>>print(st.split(' ')) #分割字符,返回一个列表
['', '', '', 'Wallace', 'waNg', '', '', '']
>>print(st.capitalize()) #全部变为小写
wallace wang
》》print(st.encode(encoding='gbk')) #转换编码方式
b' Wallace waNg '
>>print(st.expandtabs(tabsize=20)) #将tab符号转换为空格,一个tab有8个空格
Wallace waNg
>>print(st3.isalnum()) #与isdigit 类似
>>print(st.isalpha()) #判断全为字母
>>print('1A'.isdecimal()) #检查字符串是否只包含十进制字符
>>print('2a'.isidentifier()) #判读是不是一个合法的标识符,即变量名
>>print(st2.islower()) #判断是否全为小写
>>print(st2.isupper()) #判断是否全为大写
>>print(st2.isnumeric()) #如果字符串中只包含数字字符
>>print(st.istitle()) #判断是否为标题
>>print(st.title()) #转换为标题
Wallace Wang
>>print(st.lower()) #全部转换为小写
wallace wang
>>print(st.upper()) #全部转换为大写
WALLACE WANG
>>print(st.swapcase()) # 将字符串中大写转换为小写,小写转换为大写
wALLACE WAnG
二.字典
字典是另一种可变容器模型即是一种无序的可变的数据数据类型,且可存储任意类型对象。字典以键值对的形式存储,键(key)和值(value)用:隔开,每个键值对用逗号隔开。
>>di = {
"username":"wallace"
"passward":"qwe123"
"age":13
"data":[1,3,4]
}
#字典的值可以为任意的数据类型
#字典的键未不可变的数据类型
1.字典的CRUD
Create(增加):
>>di = {
"username":"wallace"
"passward":"qwe123"
"age":13
"data":[1,3,4]
}
>>di["create"] = 'create'
>>di
{
"username":"wallace"
"passward":"qwe123"
"age":13
"data":[1,3,4]
"create":"create"
}
#添加一个键值对
Retrieve(查询)
>>di
{
"username":"wallace"
"passward":"qwe123"
"age":13
"data":[1,3,4]
"create":"create"
}
>>di["username"] #通过对应的键来找到对应的值
"wallace"
Update(更新):
>>di
{
"username":"wallace"
"passward":"qwe123"
"age":13
"data":[1,3,4]
"create":"create"
}
>>di['passward'] = "" #根据对应的键来进行修改
#如果不存在对应的键则会创建一个键
>>di
{
"username":"wallace"
"passward":""
"age":13
"data":[1,3,4]
"create":"create"
}
Delete(删除):
>>di
{
"username":"wallace"
"passward":"qwe123"
"age":13
"data":[1,3,4]
"create":"create"
}
>>del di['age'] #选择对应的键,就可以删除
>>di
{
"username":"wallace"
"passward":"qwe123"
"data":[1,3,4]
"create":"create"
}
2.字典的常用方法
>>di={'w':123,'l':456,'x':789}
>>di.fromkeys(['a','b','c'],123)#用给定的键建立新的字典,每一个键默认对应值none(自定义)
{'a': 123, 'b': 123, 'c': 123}
>>di.get('r','我不在这里')#取值,存在就返回对应值,不存在默认返回none(可自定义)
'我不在这里'
>>di.setdefault('w',123)#类似get,存在就返回值,不存在就更新到字典,对应值默认none(可以自定义)
123
>>di.items()#list(di.items()) 查看字典的每一项
[('w', 123), ('l', 456), ('x', 789)]
>>di.keys()#查看字典的所有键
['w', 'l', 'x']
>>di.values()#查看字典的值
[123, 456, 789]
>>di.pop('w',123)#指定键,删除对应的值,如果键不存在,可以自定义返回值
123
>>di.popitem()#随机删除某一项
('x', 789)
三.集合
python的set是一个无序不重复元素集,基本功能包括关系测试和消除重复元素. 集合对象还支持并、交、差、对称差等。sets 支持 x in set、 len(set)、和 for x in set。作为一个无序的集合,sets不记录元素位置或者插入点。
1.集合的交并差问题
>>> x = set("wallace")
>>> y = set(['w', 'a', 'l', 'c', 'e','v'])
>>> x #把字符串转化为set,去重了
('w', 'a', 'l', 'c', 'e','m')
>>> y
('w', 'a', 'l', 'c','e','v')
>>> x & y #交
['w', 'a', 'l','c','e')
>>> x | y #并
('w', 'a', 'l', 'c', 'e', 'v','m')
>>> x - y #差
('m')
>>> y - x
('v')
>>> x ^ y #对称差:x和y的交集减去并集
('m', 'v')
2.集合的图示
其他情况类似。
3.集合的常用方法
#集合(确定的无序的一组数据)
#基本操作
#创建集合
#空集合
var = set()
print(var,type(var)) #具有数据的集合
var = {'zhangwang','zhangbo','zhanglang'}
print(var,type(var)) #成员检测
result = 'zhangbo' in var
print(result) result = 'zhangsan' not in var
print(result) #集合推导式
var = {'蚂蚱','螳螂','蝈蝈','蛐蛐'} #基本的集合推导式
result = {'*'+i+'*' for i in var}
print(result) #带有判断条件的集合推导式
result = {i for i in var if i != '蛐蛐'}
print(result) #多循环集合推导式
colors = {'red','blue','pink'}
sizes = {36,37,38,39}
result = {c + str(s) for c in colors for s in sizes}
print(result) #集合函数
'''
#add() 向集合中添加元素
girls = {'mf','sl','yj'}
girls.add('xf')
print(girls) #pop() 随机删除集合中的一个元素
boys = {'bd','zw','jl','zy'}
result = boys.pop()
print(boys)
print(result) #remove() 删除集合中指定的元素 删除不存在的元素会报错
boys = {'bd','zw','jl','zy'}
boys.remove('zy')
print(boys) #discard() 删除集合中指定的元素 删除不存在的元素啥都不做
boys = {'bd','zw','jl','zy'}
boys.discard('zy1')
print(boys) #clear() 清空集合
boys = {'bd','zw','jl','zy'}
boys.clear()
print(boys) #copy() 复制集合
boys = {'bd','zw','jl','zy'}
newboys = boys.copy()
print(newboys)
''' #difference() 计算2个集合的差集
dreamers = {'ljl','wc','xy','zb','lsy'}
girls = {'mmf','lsy','syj'}
result = dreamers.difference(girls)# result = a + b
print(result) #difference_update() 计算2个集合的差集(差集更新操作)
dreamers = {'ljl','wc','xy','zb','lsy'}
girls = {'mmf','lsy','syj'}
dreamers.difference_update(girls)#a = a + b a += b
print(dreamers) #union() 并集操作
dreamers = {'ljl','wc','xy','zb','lsy'}
girls = {'mmf','lsy','syj'}
result = dreamers.union(girls)
print(result) #update() 并集更新操作
dreamers = {'ljl','wc','xy','zb','lsy'}
girls = {'mmf','lsy','syj'}
dreamers.update(girls)
print(dreamers) #intersection() 计算2个集合的交集
dreamers = {'ljl','wc','xy','zb','lsy'}
girls = {'mmf','lsy','syj'}
result = dreamers.intersection(girls)
print(result) #intersection_update 交集更新操作
dreamers = {'ljl','wc','xy','zb','lsy'}
girls = {'mmf','lsy','syj'}
dreamers.intersection_update(girls)
print(dreamers) #超集和子集
boys = {'zzy','yqw','dw','wzc','lyb','wym','chy'}
zoudu = {'wzc','lyb','wym'}
girls = {'lsy','mmf','syj'} #issuperset() 检测当前集合是否是另一个集合的超集
result = boys.issuperset(zoudu)
print(result) #issubset() 检测当前集合是否是另一个集合的子集
result = zoudu.issubset(boys)
print(result) #isdisjoint() 检测2个集合是否不存在交集 存在交集 False
result = boys.isdisjoint(girls)
print(result) #symmetric_difference() 对称差集
dreamers = {'ljl','wc','xy','zb','lsy'}
girls = {'mmf','lsy','syj'}
result = dreamers.symmetric_difference(girls)
print(result) #symmetric_difference_update() 对称更新差集
dreamers = {'ljl','wc','xy','zb','lsy'}
girls = {'mmf','lsy','syj'}
dreamers.symmetric_difference_update(girls)
print(dreamers) #冰冻集合
#冰冻集合是一种特殊的集合类型,也是集合(集合是列表的话,冰冻集合就是元组)
#创建冰冻集合
#一般不会创建空的冰冻集合
var = frozenset()
print(var,type(var)) #带有数据的冰冻集合
var = frozenset(('qs','szx','bjh','acs'))
print(var,type(var)) #成员检测
result = 'szx' in var
print(result) #遍历冰冻集合
for i in var:
print(i) #集合推导式(无法得到冰冻集合,可以得到集合,列表,元组,字典类型)
result = {i for i in var}
print(result,type(result)) #函数
#冰冻集合可以使用集合的函数(不修改集合本身的函数都可以使用)
var = frozenset(('qs','szx','bjh','acs')) #copy()
result = var.copy()
print(result) #集合操作 交集,并集,差集,对称差集等 不修改冰冻集合本身就能使用:冰冻集合的操作结果都是冰冻集合
var1 = frozenset(('qs','szx','bjh','acs'))
var2 = {'szx','bjh','lc','wb'} #冰冻集合操作
result = var1.union(var2)
print(result) #普通集合操作(冰冻集合是参考集合)
result = var2.union(var1)
print(result)
四.数据的可变与不可变
1、什么可变数据类型和不可变数据类型
可变数据类型:value值改变,id值不变;不可变数据类型:value值改变,id值也随之改变。
常见的可变数据类型:列表(list),集合(set),字典(dict) 。
常见不可变数据类型:整数(int),字符串(char),布尔值(bool),元组(tuple)
2、如何确定一种数据类型是可变的还是不可变的
根据可变数据类型与不可变数据类型的概念,只需要在改变value值的同时,使用id()函数查看变量id值是否变化就可以知道这种数据类型是可变的还是不可变的了。
Python 全栈开发二 python基础 字符串 字典 集合的更多相关文章
- python 全栈开发:python基础
python具有优美.清晰.简单,是一个优秀并广泛使用的语言.诞生于1991年2.python历史 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器.Python这个名字,来自 ...
- Python 全栈开发四 python基础 函数
一.函数的基本语法和特性 函数的定义 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的.函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数 ...
- python全栈开发-Day8 函数基础
python全栈开发-Day8 函数 一 .引子 1. 为何要用函数之不用函数的问题 #1.代码的组织结构不清晰,可读性差 #2.遇到重复的功能只能重复编写实现代码,代码冗余 #3.功能需要扩展时,需 ...
- Python 全栈开发三 python基础 条件与循环
一. 条件语句 python条件语句是根据一条或多条语句的执行结果的真假(True Or False)来决定代码块的执行. 而执行内容可以多行,以缩进来区分表示同一范围. 1.Python判断条件真假 ...
- python全栈开发笔记---基本数据类型--字符串魔法
字符串: def capitalize(self, *args, **kwargs) test = "aLxs" v = test.capitalize() #capitalize ...
- python 全栈开发:str(字符串)常用方法操作 、for 有限循环以及if 循环
str(字符串)常用方法操作: 首字母大写: s = 'mylovepython' s1 = s.capitalize() print(s1) 输出: Mylovepython 单行多字符串首字母大写 ...
- Python 全栈开发:str(字符串)索引和切片
str(字符串)索引和切片 str(字符串)索引: #计算机中大部分索引以0为开始 s = 'mylovepython' s1 = s[0] s2 = s[4] s3 = s[-1] print(s1 ...
- Python 全栈开发一 python初识
1.Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...
- Python全栈开发【基础二】
Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...
随机推荐
- D - Replace To Make Regular Bracket Sequence
You are given string s consists of opening and closing brackets of four kinds <>, {}, [], (). ...
- Caused by: org.postgresql.util.PSQLException: ERROR: operator does not exist: character varying = integer
Springboot项目,使用postgresql数据库,mybatis做持久层框架, <select id="select" resultMap="BaseRes ...
- .NET Core开发日志——视图与页面
当一个Action完成它的任务后,通常需要返回一个实现IActionResult的对象,而最常见的就是View或者ViewResult,所谓的视图对象.那么视图与最终所看到的页面之间的联系又是怎样形成 ...
- 知乎如何基于开源Druid打造下一代数据平台?
https://mp.weixin.qq.com/s/WXA_Pn5xwlL-cA4JaGRw6Q
- go install and go captcha
https://blog.csdn.net/liuhongwei123888/article/details/8512815 [gocaptcha] http://www.cnblogs.co ...
- odoo10如何自定义自动生成单据编号
1.在已有的model中穿件一个字段name class qingjiadan(models.Model): _name = 'qingjia.qingjiadan' name = fields.Ch ...
- 2018/05/11 PHP 设计模式之 适配器模式
什么是适配器模式? 简单来说,我想买一根充电线,我买一根安卓的?还是买一根苹果的? 我也不确定,因为我以可能会换手机,对于我的形式我也不确定. 所以,我要买一根可以同时适配 安卓/苹果 的线. 所谓适 ...
- Java之旅_高级教程_URL处理
摘自 :http://www.runoob.com/java/java-url-processing.html Java URL 处理 URL(Uniform Resource Locator)中文名 ...
- openssh源码分析笔记
1.客户端保活: options.client_alive_interval options.client_alive_count_max 在wait_until_can_do_something() ...
- MVVM软件设计模式(转)
add by zhj: MVVM是一种软件设计模式,这里要说一下设计模式,我们通常所的设计模式是指面向对象中的设计模式,用在面向对象编程语言中.但软件设计模式是更高一个级别的设计模式,两者不是同一个东 ...