python六个标准的数据类型

python六个标准的数据类型python3 中有六个标准的数据类型 Number 数字 String 字符串 List 列表 Sets 集合 Dictionary 字典 tuple 元组 3

大家好,我是讯享网,很高兴认识大家。

python3中有六个标准的数据类型:

– Number(数字)

– String(字符串)

– List(列表)

– Sets (集合)

– Dictionary(字典)

– tuple(元组)

3.1数字类型:

3.1.1.数字类型:分为整形(int)、浮点数(float)和复数(complex)

整形(int):通常被称之为是整形或者整数,是正整数、负整数和0,不带小数点:如10、-56

浮点数(float):由整数部分与小数部分组成。如:2.65、3.

复数(复数):复数由实数部分和虚数部分构成,可以用a+bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点型(例如:-4的平方根)

3.1.2.类型转换

之前课程已经串讲过,当时用输入函数input()时,默认会将键入的数字1变成字符串‘1’,比如:

>>>i = input('my name is :') >>>print(type(i)) >><class 'str'> 

讯享网

要将此时字符串“1”转换为整数型,可以使用int(1)的方式。同理,当要将浮点型转换为整形时,可以使用int()函数完成

讯享网>>>a = "89" >>>print(type(a)) <class 'str'> 

上述例子,测试a所对应的是字符串,如果要将其转换为整数型,可以使用int(i)的方式。同理,当然要将浮点数转换为整型时,也可以用int()函数完成

[复制代码
讯享网](javascript:void(0)😉

>>>a = '46' >>>print(type(a)) <class 'str'> >>>b = int(a) >>>print(type(b)) <class 'int'> 

[复制代码](javascript:void(0)😉

浮点型转换,如果我们需要将整数

[复制代码](javascript:void(0)😉

讯享网>>>a = '46' >>>print(type(a)) <class 'str'> >>>b = float(a) >>>print(b,type(b)) 46.0<class 'float'> 

[复制代码](javascript:void(0)😉

复数类型转换

>>>a = 3 >>>b = 4 >>>c = complex(a,b) >>>print(3) 3+4j 

复数不能转换为整数、浮点型等

img

3.2字符串

说到字符串,我们自然会想到中文字符串。但是中文字符串涉及到一些字符集、编码、解码的问题,现在引入这些概念会吧开始的学习复杂化

所以放在后续章节,目前阶段只讨论英文字符串

3.2.1 字符串的定义

字符串可以用,单引号,双引号或者三引号括起来。其中三引号里面是可以跨行的字符串

[复制代码](javascript:void(0)😉

讯享网#单引号 >>>auto = 'hello world' #双引号 >>>auto = "my name is Augus" #三引号 >>>auto = '''python is cool''' #三引号跨行 >>>auto = '''python is cool!''' 

[复制代码](javascript:void(0)😉

3.2.2 字符串的拼接

3.2.2.1.拼接

[复制代码](javascript:void(0)😉

#加号连接 >>>a,b = 'hello','world' >>>a+b >>>'hello world' #逗号连接 使用逗号,只能用于print打印输出 >>>a,b = 'hello','world' >>>print(a,b) #上述代码如果进行赋值操作会生成元组 >>>a,b ("hello","world") #直接连接 >>>print("hello" "world") helloworld 

[复制代码](javascript:void(0)😉

3.2.2.2.字符串的乘法(重复n次)

讯享网>>>"sid" * 3 'sidsidsid' 

3.2.2.3获取字符串的长度

len('my name is: Augus') 

3.2.2.4.字符串的比较

[复制代码](javascript:void(0)😉

讯享网>>>str1 = 'abc' >>>str2 = 'lmn' >>>str3 = 'xyz' >>>str1 == 'abc' Ture >>>str1 < str2 True >>>str2 != str3 True >>>str1 < str3 and str2 == 'xyz' False 

[复制代码](javascript:void(0)😉

当我们比较字符串大小的时候,python是按照字符的字典顺序来比较的

3.2.2.4.字符串的squence操作

我们看到字符串‘ZXCVF’,每个字符串可以用正数下标表示,也可以使用负数下标表示它们在字符串中的位置

img

注意:字符串截取时,数字位是从0开始,而不是从1开始。所以一个长度为n的字符串的最后一个字符的下标是n-1

我们可以截取(slice)字符串的一部分内容。截取的操作符是[ ],这个操作符如果只有一个下标参数,那么我们将得到一个字符

如果参数有两个,中间以冒号(:)隔开,将返回一段字字符串。截取操作slice有时也称为切片操作.

例如:str[start:end],我们将得到从下标start开始,到下标end结束,但不包括下标end对应字符的那部分字符串

[复制代码](javascript:void(0)😉

>>>str = 'zxcvbnm' >>>str[0] 'z' >>>str[-7] 'z' #注意:这种情况,左含右不含 >>>str[2:4] 'cv' >>>str[-5:-3] 'cv' >>>str[3:] 'vbnm' >>>str[-4:] 'vbnm' >>>str[:3] ‘zxc >>>str[:-4] 'zxc' 

[复制代码](javascript:void(0)😉

3.2.3.字符串格式化

3.2.3.1.旧式”字符串解析(%操作符)

讯享网>>>'hello,%s is my name, I like %s' % ('Augus','footall') 'hello,Augus is my name, I like footall' 

3.2.3.2.str.format

使用位置参数

要点:从以下例子可以看出位置参数不受顺序约束,且可以为{},只要format里面有相对应的参数值即可,参数索引从0开始,

传入位置参数可用列表即可

[复制代码](javascript:void(0)😉

>>>"my name is {},i am {} years old".format("wangwu",18) "my name is wangwu,i am 18 years old" >>>"my name is {0},i am {1} years old".format("wangwu",18) "my name is wangwu,i am 18 years old" >>>"my name is {1},i am {0} years old".format(18,"wangwu") "my name is wangwu,i am 18 years old" 

[复制代码](javascript:void(0)😉

~使用关键字参数

要点:关键字参数值要对的上,可用字典当做关键字参数传入时,字典前加即可,如下例子3

[复制代码](javascript:void(0)😉

讯享网>>>"my name is {name},i am {age} years old".format(name ="wangwu",age = 18) 'my name is wangwu,i am 18 years old' >>>info = { 
   "name":"wangwu","age":18} >>>"my name is {ele[name]},i am {ele[age]} years old".format(ele=info) 'my name is wangwu,i am 18 years old' #例3:将字典当做关键字参数传入 >>>info = { 
   "name":"wangwu","age":18} >>>"my name is {name},i am {age} years old".format(info) 'my name is wangwu,i am 18 years old' 

[复制代码](javascript:void(0)😉

3.2.3.3.字符串插值/f-string

在python3.6中添加一个新的字符串格式化方法,被称为字面量格式化字符串或者"f-string"。

[复制代码](javascript:void(0)😉

>>>name = badboy >>>f'Hello,{name}!' 'hello,badboy' >>>a=5 >>>b=10 >>>f'Five plus ten is {a+b}and not {2*(a+b)}' 'Five plus ten is 15 and not 30.' 

[复制代码](javascript:void(0)😉

3.3 列表

字符串、列表(List)和元组(tupe),三种数据类型在python中都属于Sequence(序列)这种概念

Sequence这个概念和C语言或者Java语言里面的数组特别相似。我们可以把它理解为一串数据

。其中每个数据都可以用数字索引访问。也可以切片,加,乘等。python内置了确定序列的长度len()和确定最大max()和最小min()的元素的方法

列表是python里面最常用的数据类型之一

字符串里面包含的元素是一个个的字符,并且字符串是不可更改的(你不能修改字符串里面的某个字符,只能根据它创建出新的字符串对象)

列表,它里面的每个元素都可以是任何类型的python对象并且是可以更改的!!!

3.3.1创建列表

创建一个list对象

讯享网>>>re = [56,'name','cbd',3.14] >>>print(re) [56,'name','cbd',3.14] >>>print(type(re)) <class 'list'> 

通过上述例子可以得出结果,list用方括号([])创建,列表里面的元素可以是整数,小数,字符串。事实上所有类型的python对象,包括python内置对象

和自定义对象都可以存储在list里面,作为list的一个元素

创建空列表

>>>a = [] 

也可以这样子创建空列表

讯享网>>>a = list() 

**list在python里面是一个关键字,大家千万不要定义一个变量的名字叫list。这样会导致list关键字会创建的list变量覆盖掉

3.3.2.sequence(序列)操作

和字符串一样,列表也支持切片(slice)操作。

[复制代码](javascript:void(0)😉

>>> result = [3.14,'hello',78,['NBA','WNBA','CBA','WCBA'],{ 
   'name':'augus','age':'18'},3+4j] >>> print(result) [3.14, 'hello', 78, ['NBA', 'WNBA', 'CBA', 'WCBA'], { 
   'name': 'augus', 'age': '18'}, (3+4j)] >>> result[1:4] ['hello', 78, ['NBA', 'WNBA', 'CBA', 'WCBA']] >>> result[3] ['NBA', 'WNBA', 'CBA', 'WCBA'] >>> result[:3] [3.14, 'hello', 78] >>> result[3:] [['NBA', 'WNBA', 'CBA', 'WCBA'], { 
   'name': 'augus', 'age': '18'}, (3+4j)] >>> result[4:] [{ 
   'name': 'augus', 'age': '18'}, (3+4j)] >>> result[-5:-1] ['hello', 78, ['NBA', 'WNBA', 'CBA', 'WCBA'], { 
   'name': 'augus', 'age': '18'}] >>> result[-1:-4] [] >>> 'hello' in result True >>> '3.14' not in result True >>> result[3][2] 'CBA' >>> result[4]["name"] 'augus' >>> 

[复制代码](javascript:void(0)😉

特别注意:切片操作都是创建了一个新的列表对象作为返回值。原来的列表对象并没有改变。

像列表这种元素是任何其他类型对象的对象,我们通常会形象的吧它称之为容器(container)对象,因为它像一个容易一样用来盛放其他对象

3.4元组(tuple)

元组也是sequence对象。它具有sequence(序列)的一切特性

同样他也是一个容器对象,可以存放所有的python对象

它和列表最大的不同是:和字符串类似,它也是不可改变(immutable)。就是说元组内容创建出来以后,它的内容是不能变化的

3.4.1创建元组

元组用()来创建,里面的元素可是是整数、小数、字符串。其实所以类型的python对象,包括python内置对象和自定义对象都可以存储在元组中,

作为其中的一个元素

讯享网>>>(78,4.567,'a','NBA') (78,4.567,'a','NBA') 

同意tuple也是python中的一个关键字,不能将其定义为变量名。这样会导致tuple关键字被tuple变量覆盖

3.4.2.sequence操作

既然tuple也是一种squence,那自然支持所有squence的操作

[复制代码](javascript:void(0)😉

>>> tup = (123,'name',6.33,['mysql','sql service'],4+3j) >>> tup[0] 123 >>> tup[1:4] ('name', 6.33, ['mysql', 'sql service']) >>> tup[:3] (123, 'name', 6.33) >>> tup[3][0] 'mysql' >>> 123 in tup True >>> 'name' in tup True >>> 6.33 not in tup False >>> 6.33 in tup True >>> tup[0] = '123' Traceback (most recent call last): File "<pyshell#10>", line 1, in <module> tup[0] = '123' TypeError: 'tuple' object does not support item assignment #元组对象不支持项分配>>>tup1 = ('google','baidu','sougou','biying')>>>tup2 = (1,2,3)#连接操作>>>tup3 = tup2 + tup1>>>print(tup3) 

[复制代码](javascript:void(0)😉

注意:切片操作都是创建了一个新的元组对象作为返回值。原来的元组对象并,并没有变

3.4.2赋值给多个变量

另外我们可以吧sequence类型的对象里面的元素赋值给多个变量

讯享网>>>a,b=(1,2) >>>c,d,e = [3,7,5] >>>print(a,b,c,d,e) 1 2 3 7 5 

3.5字典

3.5.1定义字典和元素的访问

前面我们学习过list、tuple对象。可以用来存储别的对象

假设我要存储同学的年龄信息,可以创建如下的list

[ ('tom mark',14), ('Jack Mark'),15) ] 

这里出现了个问题:

list这种类型的对象是通过下标来访问存储对象的,下标和元素的内容没有关系,如果我们根据某个同学的姓名查找某个同学的信息,只能根据一个个查找元素

如果存储的对象很多,显示着很不方便

为了解决这个问题,python引入了内置对象,字典(dict)对象

讯享网dict1 = {} dict2 = {'name':'augus','age':18} 

上面的信息如果用字典对象存储是这样的

[复制代码](javascript:void(0)😉

studentinfo = { 
    'jack ' : 16 'augus':15 } >>>print(studentinfo['augus']) 15 

[复制代码](javascript:void(0)😉

dict对象的存储也叫键值对(key-value)存储。具有如下的特点

~~dict是可变的

~~dict可以存储任意数量的python对象

~~dict可以存储任何python数据对象

~~dict以:key:value,即“键”:“值”对的形式存储数据,每个键是惟一的

~~dict根据键查找值的效率非常高

在根据key去查找value对象的时候,底层是根据key进行hash计算出一个数值,这个数值能直接得到value所在的存储位置

像dict这种根据key值找到value内容的,经常被称之为map或者hash table

dict对象的key可以是很多种对象类型,最常用的效率也是最高的是数字或者字符串

dict对象的值可是另一个dict

studentinfo = {

‘jack ’ :{‘age’:14,‘address’:‘street waltz,no2’},

‘augus’:{‘age’:18,‘address’:‘street waltz,no4’},

}

>>>print(studentinfo[‘augus’][‘age’])

3.5.2添加、修改、删除

字典对象可以像下面这样直接进行赋值来添加对象

>>>dict3 = {}

>>>dict3[2] = ‘cba’

>>>dict3[‘2’] = 3.

>>>dict[5.1] = ‘xyz’

>>>dict3

{2:‘cba’,‘2’:3.,5.1:‘xyz’}

如果赋值操作里面指定的key不存在则是添加对象,如果key已经存在,则变成了修改操作

>>>dict[2] = ‘NBA’

{2:‘NBA’,‘2’:3.,5.1:‘xyz’}

那么大家思考一下,以前的‘cba’对象到哪里去了?

和list类似,如果我们要删除dict的一个元素,可以用如下方法:

讯享网del student['name'] #remove entry with key 'name' 

或者

value = student.pop('name') #remove & return entry w/key 

3.5.3字典变量

例如

讯享网dict1 = { 
   'Google': 'www.google.com', 'baidu': 'www.baidu.com', 'biying': 'cn.bing.com/','sougou':'www.sogou.com'} 

如果我需要答应出所有网站名字和具体网址,可以这样做:

[复制代码](javascript:void(0)😉

>>> for name in dict1: print('Name:%s,URL:%s'% (name,dict1[name])) Name:Google,URL:www.google.com Name:baidu,URL:www.baidu.com Name:biying,URL:cn.bing.com/ Name:sougou,URL:www.sogou.com 

[复制代码](javascript:void(0)😉

或者使用items()函数:

Python 字典(Dictionary) items() 函数以列表返回可遍历的(键, 值) 元组数组。

[复制代码](javascript:void(0)😉

讯享网dict1 = { 
   'Google': 'www.google.com', 'baidu': 'www.baidu.com', 'biying': 'cn.bing.com/','sougou':'www.sogou.com'} for name,url in dict1.items(): print('Name:%s,URL:%s'% (name,url)) Name:Google,URL:www.google.com Name:baidu,URL:www.baidu.com Name:biying,URL:cn.bing.com/ Name:sougou,URL:www.sogou.com 

[复制代码](javascript:void(0)😉

3.6.集合

集合是一种序列,可以存放任意格式数据,但集合里元素不允许重复,每个元素用逗号(,)分隔,整个集合是放在花括号{}中,格式如下

s = {value1,value2,.....,valueN} 

集合用于包含一组无序的对象。要创建集合,可使用set()函数并像下面这样提供一系列的项:

讯享网s = set([3,6,9,4]) 

或者

t = set('hello') 

#注意set()函数只能放入一个参数

集合支持一系列标准操作,包括并集、交集、差集和对称差集,例如:

[复制代码](javascript:void(0)😉

讯享网#t和s的并集 a = t | s #t和s的交集 b = t & s #求差集(项在t中,但不在s中) c = t - s #对称差集(项在t或者s中,但不会同时出现在二者中) d = t ^ s 

[复制代码](javascript:void(0)😉

基本操作

[复制代码](javascript:void(0)😉

#添加一项 t.add('x') #在s中添加多项 s.update([10.37,67]) #使用remove可以删除一项 t.remove('j') #set的长度 len(s) 

[复制代码](javascript:void(0)😉

)函数并像下面这样提供一系列的项:

讯享网s = set([3,6,9,4]) 

或者

t = set('hello') 

#注意set()函数只能放入一个参数

集合支持一系列标准操作,包括并集、交集、差集和对称差集,例如:

[[外链图片转存中…(img-Ox4wwACA-58)]](javascript:void(0)😉

讯享网#t和s的并集 a = t | s #t和s的交集 b = t & s #求差集(项在t中,但不在s中) c = t - s #对称差集(项在t或者s中,但不会同时出现在二者中) d = t ^ s 

[[外链图片转存中…(img-SsBot2e9-62)]](javascript:void(0)😉

基本操作

[[外链图片转存中…(img-9f2hons8-66)]](javascript:void(0)😉

#添加一项 t.add('x') #在s中添加多项 s.update([10.37,67]) #使用remove可以删除一项 t.remove('j') #set的长度 len(s) 

[[外链图片转存中…(img-vygzrezL-68)]](javascript:void(0)😉

小讯
上一篇 2025-03-04 19:08
下一篇 2025-03-22 08:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/70740.html