Python基础入门教程Python数据

Python基础入门教程之Python数据类型对于Python数据类型今天我们做一个详细的了解。

Python基本数据类型一般分为:数字、字符串、列表、元组、字典、集合这六种基本数据类型。

一、数值(Numbers)

numbers:列出了一些简单的例子

,-,0,    #整型--int()3.61,3.1e-6,0.0    #浮点型--float()3+6j,3.0+6.0j,6j    #复数--      strvar=""

  #   特征:可以获取,但不可以修改,有序排列

  #   获取字符串中的数据:跟列表list元组tuple的取值一模一样(正向下标,反向下标)

  #   修改字符串当中的值,不可修改,会进行报错

再来看看字符串的一些常见操作

"""字符串"""    #多行字符串,一般用于文件说明和函数说明,可使用__doc__输出s=优雅的Python#切片s[0],s[-1],s[3:],s[::-1]  #优,n,Python,nohtyP的雅优#替换,还可以使用正则表达式替换s.replace(Python,Java)  #优雅的Java#查找,find()、index()、rfind()、rindex()s.find(P)      #3,返回第一次出现的子串的下标s.find(h,)      #6,设定下标开始查找s.find()      #-1,查找不到返回-1s.index(y)      #,返回第一次出现的子串的下标s.index()    #不同与find(),查找不到会抛出异常#转大小写,upper()、lower()、swapcase()、capitalize()、istitle()、isupper()、islower()s.upper()      #优雅的PYTHONs.swapcase()      #优雅的pYTHON,大小写互换s.istitle()      #Trues.islower()      #False#去空格,strip()、lstrip()、rstrip()#格式化s1=%s%s%(Windrivder,1)  #Windrivder1s={},{}.format(1,Windridver)  #推荐使用format格式化字符串s3={0},{1},{0}.format(Windrivder,1)s={name}:{age}.format(age=1,name=Windrivder)#连接与分割,使用+连接字符串,每次操作会重新计算、开辟、释放内存,效率很低,所以推荐使用joinl=[,03,9,:00]s5=-.join(l)      #-03-9-:00s6=s5.split(-)      #[,03,9,:00]#还有一些常用的,这里只列出来S.endswith()      #字符串是否以给定字符串结尾S.startswith()      #字符串是否以给定字符串开始S.isalnum()      #是否全是字母和数字S.isalpha()      #是否全是字母S.isspace()      #是否全是空白字符S.center(width,[fillchar])  #中间对齐S.ljust(width,[fillchar])  #左对齐,默认是空格补全S.rjust(width,[fillchar])  #右对齐S.count(substr,[start,[end]])#计算substr在S中出现的次数S.splitlines([keepends])  #按行分割成list,keepends是一个bool值,如果为真每行后而会保留行分割符。

以上是一些常见的操作,当然还有一个没有列出来,这里想单独拿来谈谈,就是Python3字符串的编码:

ASCII编码出现最早,只有大小写英文字母、数字和一些符号等17个字符,为了实现多语言表示,如中文的GB31编码,日文的Shift_JIS编码等,Unicode孕育而生,它将所有语言都统一到一套编码中;

在Python3中所有字符串在内存中均是Unicode保存;

当需要将文件保存到外设或进行网络传输时,就要进行编码转换,将字符转换为字节,以提高效率

#encode将字符转换为字节str=优雅的Pythonstr.encode()      #默认编码是UTF-8b\xe\xbc\x98\xe9\x9b\x85\xe7\x9a\x8Pythonstr.encode(gbk)b\xd3\xc5\xd1\xc5\xb5\xcPython#decode将字节转换为字符b\xe\xbc\x98\xe9\x9b\x85\xe7\x9a\x8Python.decode()优雅的Pythonb\xd3\xc5\xd1\xc5\xb5\xcPython.decode(gbk)优雅的Python

在Python3中,内存中的Unicode字符用str对象表示,对应于的,Python3使用了一种全新的数据类型来表示字节,就是bytes。

所以encode转换后的字节流就不是str对象,而是bytes字节对象,它当然支持分片、索引、基本数值运算等操作,但str与bytes类型的数据不能进行+操作。

来看看bytes数据类型的定义:

byt=b优雅的PythonFile"stdin",line1SyntaxError:bytescanonlycontainASCIIliteralcharacters.byt=bPythontype(byt)classbytes

从上述例子中可以看出bytes对象不能由超出ASCII码范围的字符组成,只接受ASCII码这个范围的字符。

uaa\ua中.encode(unicode-escape)b\\uedb

Aab

Aab\x0\x1\x61b

Aa#-*-coding:utf-8-*-...

同样,从上面的例子我们还可以总结出一些东西:

Unicode码在Python3中有两种表示方式,u字符串和\u四位十六进制数;区分r字符串,是表示不转义的原始字符串

将字符直接以Unicode码保存使用unicode-escape

在Python的交互式环境中,输出bytes对象时,可按ASCII码表示,或按十六进制\x表示

在Python头声明#-*-coding:utf-8-*-,是告诉Python编译器按utf-8的方式读取,这个声明并不能将Python文件本身保存成utf-8,这时候需要借助文本编辑器保存文件编码。

二、列表(List)

Python可使用语法糖[]表示列表,其中的元素可以是任何类型,以顺序存储的方式动态储存数据:

#定义L=[]    #推荐方式L=list()L=[Windrivder,1,{name:xiaoming}]#多重赋值技巧name,age,other=L#列表切片参考str#常用方法L.append(a)      #[Windrivder,1,{name:xiaoming},a]L.pop()          #[Windrivder,1,{name:xiaoming}],还可以指定下标删除元素L.extend(L1)      #合并列表L1L.insert(1,a)    #在下标为1的位置插入aL.index(a)      #同字符串的index()L.remove(a)      #删除操作L.count(a)      #求某个值的个数L.reverse()      #反转L=[,,-1,9,-5,6]L.sort()      #sort()排序,使用非常灵活L.sort(reverse=True)  #反序L.sort(key=abs)      #传入函数关键字作为排序规则forl1,linzip([windrivder,1],[jack,]):  #zip同时遍历两个列表print({}--{}.format(l1,l))forindex,valueinenumerate(L):            #enumerate带索引遍历列表print({}--{}.format(index,value))#列表生成式L=[[1,,3],[,5,6],[7,8,9]]r=[sum(L)forlinL]              #[6,15,]L=[aforainrange(0,10)ifa%==0]  #[0,,,6,8]

三、tuple元组型

     特征:可以获取但不能修改数据,排列有序

     #   tuplevar=()这是一个空元祖   #   tuplevar=(1)这是一个整型   #   tuplevar=(1,)这是一个元祖   #综上所述:判断tuplevar=(?)或tuplevar=(?,)这两种是不是元组,      取决于里面值是否有逗号,有就是元组没有就是别的数据类型      空元祖可以使用()来表示   

  #   获取元组中的数据:跟列表list的取值一模一样(正向下标,反向下标)

  #   修改元组中的值,不可以修改,会进行报错

#定义t=()t=tuple()t=(1,)#定义一个元素时,需要与(1)--int区分开t=(Windrivder,1,{name:xiaoming})#没有列出更多的方法,可以使用tuple.__dir__()查看t.index(1)    #1

四、dict字典

  dictvar={}

  #   冒号左边是键,右边是值,键值对之间用逗号隔开

  #   特征:可以获取,可以修改,无序排列(python3.6版本看似有序、实则无序   #   底层,使用了哈希算法,储存的数据是散列)(3.5版本无序),键值对储存的数据

  #   获取字典当中的数据:可以获取,直接输入冒号左边的键即可取值的数据

  #   修改字典当中的数据:可以修改,直接将要改的值替换掉键就可实现修改

  #一般在命名字典的键时,推荐使用字符串,按照变量命名的字符串.

#定义d={}d={windrivder:1,other:{jack:}}#嵌套字典d=dict(name=windrivder,age=1)d=dict([(name,windrivder),(age,1)])#{name:windrivder,age:1}d=dict(zip([name,age],[windrivder,1]))#常用方法d.keys(),d.values(),d.items()  #分别遍历键、值、键值对d.setdefault(key[,value])    #为字典的某一项设置默认值d.get(key,default)      #获取字典中的某个值d.update(newd)        #合并字典,此方式效率较高d.pop(key,[d])#删除字典中键值为key的项,返回键值为key的值,如果不存在,返回默认值d,否则抛出异常d.popitem()        #随机删除某一项键值对,还可以使用关键字deld={k:vfor(k,v)inzip([name,age],[windrivder,1])}

五、set集合型

  setvar={}      数据类型显示是一个dict字典   setvar=set()   强制转换成一个空集合的数据类型(只有这一种类型)

  #   特征:不可获取,也不可以修改,无序排列,自动去掉重复数据

  #   获取集合当中的数据:不能获取,会进行报错

  #   修改集合当中的数据:不可修改,会进行报错

a=set()b=set([1,,3])#平时使用到的时候不多,所以没有列出a.add(frozenset(b))六、自动类型转换( 针对于Number数据类型来说的 )

  # 规律:精度从低到高bool-int-float-   # 当两个不同的数据类型运算时,默认向更高精度转化

# True转化成整型是1False转化成整型是0

  # int+float类型较特殊,最终值会保留小数点后15~18位,因为float在本质上存在精度损耗,

   因为小数的二进制在内存中是无限循环没有终止,一般截取15~18位

classCustomDict(dict):Simpledictbutsupportaccessasx.ystyle.def__init__(self,names=(),values=(),**kw):super(CustomDict,self).__init__(**kw)fork,vinzip(names,values):self[k]=vdef__getattr__(self,key):try:returnself[key]exceptKeyError:raiseAttributeError(r"CustomDictobjecthasnoattribute%s"%key)def__setattr__(self,key,value):

self[key]=value

以上即为对于Python数据的六大类型的相关介绍,大家认真阅读操作一下!

正在学习Python方向的同学,为大家推荐千锋原创教材Python系列丛书:

如果没有Python基础的同学,可以先查看我们的Python基础入门教材进行基础入门,如果你有一定的Python基础,那么建议你根据Python发展方向来选择进阶书籍。

如果在学习Python过程中遇到其他问题,欢迎下方留言咨询,千问千知老师将第一时间为大家解答。

相关信息推荐:

Python基础入门教程:Python编程原理

01-05-8

Python基础入门教程:初学者常见的问题

01-05-8

Python基础入门教程:Python与Python3版本的区别

01-05-8

Python基础入门教程:编程小白学Python满足以下条件即可

01-05-8

程序员必备知识:计算机编程语言的三大分类

01-05-6

预览时标签不可点收录于话题#个上一篇下一篇

转载请注明:http://www.sonphie.com/jbby/14555.html

网站简介| 发布优势| 服务条款| 隐私保护| 广告合作| 网站地图| 版权申明

当前时间: