Python爬坑基本数据类型最近进了python的坑。因为本人是一名前端开发人员,所以本文从前端的角度来比较JS和Python。本文基于Python3讲解talkischeap,showmethecode.先放一张图。Python3中有六种标准数据类型:Number、Str、String、List、Tuple、Set、Set、Dict、Dictionary其中:不可变数据(3):Number(数字)、String(字符串)、Tuple(元组)变量data(3):列表(list)、字典(dictionary)、集合(set)Number数字有四种类型分别是:1.整数型(int)2.浮点型(float)3.布尔型(bool)4.复数(complex)整数类型和浮点类型在python3中,整数类型只有一种,int和浮点类型也只有一种float。其他语言中的整数:(short)(int)(long);其他语言的浮点数:单精度(float)双精度(double)>>>type(1)#integer>>>type(1.0)#floatingpoint>>>type(1+1.0)#浮点数>>>type(-1)#integer>>>type(-1.0)#浮点布尔值有些人可能会感到奇怪,尤其是前端。因为在js中,numeric和Boolean是两种不同的类型。在python中,布尔类型是数值类型。其实不难理解,True就是1,False就是0。python中布尔值的首字母必须大写>>>type(False)#bool类型>>>type(True)#bool类型>>>int(True)1#因为boolean类型是number的子类型,True可以转换为1>>>int(False)0>>>bool(0.5)#非0非空值都是bool真值True>>>bool(-1)True>>>bool(0)#值0都是bool假值False>>>bool('')#空str都是boolFalse值False>>>bool([])#空列表都是boolfalse值False>>>bool(())#空元组都是boolfalsevaluesFalse>>>bool({})#空集合都是boolfalsevalueFalse>>>bool(None)#TypeNone类型是boolfalsevalueFalse会用于复数复杂的科学计算,它是一般很少使用。我来这里只是为了理解。用小写字母j表示复数>>>35j35jStrStringPython的字符串和JS的字符串除了运算方式不同外几乎没有区别。字符串用>>>"let'sgobaby!"表示单引号和双引号#单引号和双引号区分“let'sgobaby!”>>>'我们走吧宝贝~''我们走吧宝贝~'>>>'我们走吧宝贝。#escape(\)character"let'sgobaby."三引号多换行>>>'''python字符串换行有点像markdownpython字符串换行有点像markdownpython字符串换行有点像markdownmarkdown''''\npython字符串换行有点像markdown\npython字符串换行有点像markdown\npython字符串换行有点像markdown\n'#三引号自动换行>>>print('的作用反斜杠n\n是回车符\ntest')#转义符\n反斜杠n的作用是回车符test>>>转义符>>>print('hello\\nworld')#escape\nhello\nworld>>>bydoublebackslashes\\print(r'hello\nworld')#通过在前面加一个小写的r对\n进行转义,然后将r加到原字符串hello\nworld字符串操作>>>'hello'+'world'#简单字符字符串拼接'helloworld'>>>'hello'*3#字符串乘法注:Python字符串可以进行乘法运算。在JS中,除了数字字符串乘法,是对应的数字乘法,其余结果都得到AllNaN'hellohellohello'>>>'helloworld'[0]#通过下标获取字符串的单个元素'h'>>>'helloworld'[-1]#从字符串末尾开始计数'd'截取字符串(切片)>>>'helloworld'[0:5]#从下标0开始向前截取5位'hello'>>>'helloworld'[0:-1]#从下标0向后截取1位'helloworld'>>>'helloworld'[5:]#向后截取5位下标自动截取到字符串末尾'world'>>>'helloworld'[-5:]#自动截取从字符串向后到末尾的5个下标'world'>>>'helloworld'[:-5]#从下标0向后计数到5digits'hello'>>>'helloworld'[:5]#从下标开始往前数0到5位'hello'List列表在JS中基本可以理解为Array>>>[1,2,3,4,5,6]#以逗号分隔[1,2,3,4,5,6]>>>type([1,2,3,4,5,6])#列表类型>>>[1,'str',2,True,3,4,False,5,6]#列表元素可以有多种类型[1,'str',2,True,3,4,False,5,6]>>>列表访问拦截的基本操作>>>['a','b','c','d'][1]#访问列表'b'中的一个元素>>>['a','b','c','d'][0:2]#拦截列表['a','b']>>>['a','b','c','d'][-1:]#反向拦截列表['d']列表操作>>>['a','b','c','d']+['e','f']#类似于JS中的[].concat()['a','b','C','d','e','f']>>>['aaa']*2#列表相乘注意:JS不支持数组相乘['aaa','aaa']判断是否列表中的元素存在>>>3in[1,2,3]#类似于arr.indexOf()inJSTrue>>>3in[7,8,9]False>>>3notin[7,8,9]TrueTuple元组元组的定义和列表基本一样,但是主要有两个特点1.元组使用括号()来表示2.元组是不可变的>>>type((1,2,3))#tupletupletype>>>(1,2,3,4,5,6)#用逗号分隔(1,2,3,4,5,6)>>>(1,True,'str',2)#元素可以有多种类型(1,True,'str',2)>>>(1,2,3,4,5,6)[0]#访问元素通过下标1>>>(1,2,3,4,5,6)[0:3]#元祖截取(1,2,3)>>>(1,2,3)+(4,5,6)#元祖加法和列表操作类似JSON数组操作[].concat(1,2,3,4,5,6)>>>(1,2,3)*2#元组乘法和列表(1,2,3,1,2,3)一样>>>区别列表和元组之间是不可变的,所以代码更安全。如果可能的话,可以使用tuple而不是list,尽量使用tupleSet集合特性设置无序序列是有序的>>>{1,2,3,4,5,6}#使用花括号定义集合{1,2,3,4,5,6}>>>type({1,2,3,4,5,6})#集合是集合类型>>>{1,2,3,4,5,6}[0]#会报错,因为集合是无序的,所以不能通过下标访问集合中的元素。集合不重复,会自动过滤掉重复元素>>>{1,1,1,2,2,2,5,6,6,7,8,7,7,7}#自动过滤重复元素{1,2,5,6,7,8}Set操作区别intersectionandunion>>>type(set())#set()用来定义一个空集如果用{}直接定义一个空集,那么它的类型不是set而是dict>>>len({1,2,3})#len()在{1,2,3}中找到set3>>>1的长度#判断集合中是否存在元素True>>>1notin{1,2,3}#判断集合中是否存在元素False>>>{1,2,3,4,5,6}-{3,4}#差分集:去掉两个集合中共同的元素{1,2,5,6}>>>{1,2,3,4,5,6}&{3,4,7}#交集:求两个集合中的共同元素{3,4}>>>{1,2,3,4,5,6}|{3,4,7}#Union:找出两个集合中所有唯一的元素{1,2,3,4,5,6,7}Dict字典特点1.key/value形式(类似于key/valueJS中的对象)2.字典的key不能重复3.字典的key必须是不可变类型`intstrtuple`字典相关操作>>>{1:1,2:2,3:3}#核心价值e表单定义字典??{1:1,2:2,3:3}>>>type({1:1,2:2,3:3})#dicttype>>>{(1,2,3):'Yuanzuisimmutable',2:2,3:3}#Yuanzu可以作为key,因为Yuanzu具有不可变的特性{(1,2,3):'YuanzuisimmutableChanged',2:2,3:3}>>>{'name':'tiger','age':'25'}['name']#字典使用key访问vlue和JS中的对象与'tiger一致'>>>{'name':'tiger','age':'25','name':'pig'}#字典的key不能重复覆盖之前的key{'age':'25','name':'pig'}总结到这里,再回头看看文章开头的那张图,Python的基本数据结构就会更加清晰:首先,我们将Python的基本数据结构分为两种类别:数和组数又分为整数、浮点数、布尔数和复数。这些概念刚才也提到了,比较简单,就不赘述了。主要说下组的概念:组类型可以分为序列、集合和字典。序列特性:序列是有序的,可以通过下标或索引访问其中的元素。比如列表、元组、字符串都是序列,可以通过索引访问其中的元素。但请注意,字符串和元组是不可变的。集合特性:集合是无序的,元素不能重复,所以不能通过下标或者索引访问元素,当然字典也不能分片。可以简单理解为JS中的一个对象,可以通过key访问。价值。其中,key必须是不可变的,比如数字,字符串,甚至祖先都可以作为字典的key,因为祖先也是不可变的。