一.字符串

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
 >>'))       #给字符串设置宽度,并且可以在一边添加字符 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["  #根据对应的键来进行修改
 #如果不存在对应的键则会创建一个键
 >>di
 {
 "username":"wallace"
 "
 "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基础 字符串 字典 集合的更多相关文章

  1. python全栈开发-Day8 函数基础

    python全栈开发-Day8 函数 一 .引子 1. 为何要用函数之不用函数的问题 #1.代码的组织结构不清晰,可读性差 #2.遇到重复的功能只能重复编写实现代码,代码冗余 #3.功能需要扩展时,需 ...

  2. python 全栈开发:python基础

    python具有优美.清晰.简单,是一个优秀并广泛使用的语言.诞生于1991年2.python历史 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器.Python这个名字,来自 ...

  3. Python 全栈开发四 python基础 函数

    一.函数的基本语法和特性 函数的定义 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的.函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数 ...

  4. Python 全栈开发三 python基础 条件与循环

    一. 条件语句 python条件语句是根据一条或多条语句的执行结果的真假(True Or False)来决定代码块的执行. 而执行内容可以多行,以缩进来区分表示同一范围. 1.Python判断条件真假 ...

  5. python全栈开发笔记---基本数据类型--字符串魔法

    字符串: def capitalize(self, *args, **kwargs) test = "aLxs" v = test.capitalize() #capitalize ...

  6. python 全栈开发:str(字符串)常用方法操作 、for 有限循环以及if 循环

    str(字符串)常用方法操作: 首字母大写: s = 'mylovepython' s1 = s.capitalize() print(s1) 输出: Mylovepython 单行多字符串首字母大写 ...

  7. Python 全栈开发:str(字符串)索引和切片

    str(字符串)索引和切片 str(字符串)索引: #计算机中大部分索引以0为开始 s = 'mylovepython' s1 = s[0] s2 = s[4] s3 = s[-1] print(s1 ...

  8. Python 全栈开发一 python初识

    1.Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...

  9. Python全栈开发【基础二】

    Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...

随机推荐

  1. 浅谈算法和数据结构: 十 平衡查找树之B树

    前面讲解了平衡查找树中的2-3树以及其实现红黑树.2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key. 维基百科对B树的定义为“在计算机科学中,B树(B-tree)是一种 ...

  2. [译]最长回文子串(Longest Palindromic Substring) Part I

    [译]最长回文子串(Longest Palindromic Substring) Part I 英文原文链接在(http://leetcode.com/2011/11/longest-palindro ...

  3. React 开发注意事项,注意点

    react优势: 仅仅只要表达出你的应用程序在任一个时间点应该长的样子,然后当底层的数据变了,React 会自动处理所有用户界面的更新. 数据变化后,React 概念上与点击“刷新”按钮类似,但仅会更 ...

  4. CPU指令系统

    CPU就是通过指令系统来操控寄存器然后实现读取数据的,所以我们必须介绍一下CPU的指令系统 如果我们知道指令的英文全称,这对我们理解指令的作用有很大帮助,所以贴出指令英文全称 接下来就是介绍一些主要的 ...

  5. React Native中的网络请求fetch和简单封装

    React Native中的网络请求fetch使用方法最为简单,但却可以实现大多数的网络请求,需要了解更多的可以访问: https://segmentfault.com/a/1190000003810 ...

  6. 知识积累:DAS NAS SAN

    DAS(Direct Acess Storage—直接连接存储)是指将存储设备通过SCSI接口或光纤通道直接连接到一台计算机上.NAS(Network Attached Storage)—网络连接存储 ...

  7. 已收录的帝国cms文章被误删除了怎么办?

    我们一直提倡网站要经常备份,但是有时也会遗忘,一不小心被谁删除了那就欲哭无泪了.就像ytkah刚弄了一个站,开了个权限比较高的后台帐号给别人用,居然把两三个栏目都删除了,想发狂啊.刚好又有段时间没备份 ...

  8. Linux下为PHP安装oci8及pdo_oci扩展

    下载instantclient 以及sdk instantclient-basic-linux-x86-64-11.2.0.2.0.zip oracle-instantclient11.2-sdk-1 ...

  9. eclipse 异常Unhandled event loop exception

    出了这一类的异常问题,大都是一些图像优化软件插件等等. 出现的问题大都是,一些eclipse模块不显示,或者点击不反应,出现最多的次数是点击断点的时候. 我这里是Catalyst Control Ce ...

  10. VHDL数据类型转换

    函     数     名                                     功           能 STD_LOGIC_1164包集合          TO_STDLOG ...