文学起点网
当前位置: 首页 文学百科

python数据类型及使用方法(基础篇Python基本数据类型)

时间:2023-06-15 作者: 小编 阅读量: 2 栏目名: 文学百科

Python基本数据类型一般分为:数字、字符串、列表、元组、字典、集合六种基本数据类型。数字int、布尔值bool、字符串str、列表list、元组tuple、字典dict等,其中包括他们的基本用法和其常用的方法,这里会一一列举出来,以便参考。在Python2中,整数的大小是有限制的,即当数字超过一定的范围不再是int类型,而是long长整型,而在Python3中,无论整数的大小长度为多少,统称为整型int。字符串是不可修改的。

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

引言:在了解基本数据类型的时候,我们需要了解基本数据类型有哪些?数字int、布尔值bool、字符串str、列表list、元组tuple、字典dict等,其中包括他们的基本用法和其常用的方法,这里会一一列举出来,以便参考。同时还需要了解一些运算符,因为这些基本数据类型常常会用于一些运算和逻辑判断。

一、运算符

运算通常可以根据最终获得的值不同,可以分两类,即结果为具体的值,结果为bool值,那么哪些结果为具体的值-->算数运算、赋值运算,哪些结果又为bool值?--->比较运算、逻辑运算和成员运算。

1、算术运算

2、赋值运算

3、比较运算

4、逻辑运算

5、成员运算


二、基本数据类型

1、数字 ---> int类

当然对于数字,Python的数字类型有int整型、long长整型、float浮点数、complex复数、以及布尔值(0和1),这里只针对int整型进行介绍学习。

在Python2中,整数的大小是有限制的,即当数字超过一定的范围不再是int类型,而是long长整型,而在Python3中,无论整数的大小长度为多少,统称为整型int。

其主要方法有以下两种:

int -->将字符串数据类型转为int类型, 注:字符串内的内容必须是数字 

1 #!/usr/bin/env python

2 # -*- coding:utf-8 -*-

3

4 s = '123'

5 i = int( s )

6 print( i)

bit_length() -->将数字转换为二进制,并且返回二进制的位数

#!/user/bin/env python

#-*- coding:utf-8 -*-

i =10

print( i.bit_length() )

#输出结果为:

>>>4 

注释:因为十进制数:10转化为二进制数是1010,所以长度为4位

2、布尔值 --->bool类

对于布尔值,只有两种结果即True和False,其分别对应与二进制中的0和1。而对于真即True的值太多了,我们只需要了解假即Flase的值有哪些,如:None、空(即 [ ]/( ) /" "/{ })、0;

#以下结果为假,即None、‘’、[]、()、{}以及 0

>>> bool(None)

False

>>> bool('')

False

>>> bool([])

False

>>> bool(0)

False

>>> bool(())

False

>>> bool({})

False

3、字符串 --->str类

关于字符串是Python中最常用的数据类型,其用途也很多,我们可以使用

单引号 ‘’或者双引号“”来创建字符串。

字符串是不可修改的。所有关于字符我们可以从 索引、切片、长度、遍历、删除、分割、清除空白、大小写转换、判断以什么开头等方面对字符串进行介绍。

创建字符串

#!/usr/bin/env python

# -*- coding:utf-8 -*-

#字符串的形式:使用‘’或者“”来创建字符串

name ='little_five'

print(name)

切片

#获取切片,复数代表倒数第几个,从0开始

>>> name ="little-five"

>>> name[1]

'i'

>>> name[0:-2] #从第一个到倒数第二个,不包含倒数第二个

'little-fi'

索引--> index()、find()

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# 修正版

name = "little_five"

#index-->获取索引,语法->str.index(str, beg=0 end=len(string)),第二个参数指定起始索引beg,第三个参数结束索引end,指在起始索引到结束索引之前获取子串的索引

print(name.index("l",2,8)) #在索引区间2-8之前查找‘l’,找到是第二个‘l’,其索引为4

#find -->其作用与index相似

print(name.find("l",2)) #结果也为 4

index()与find()的不同之处在于:若索引的该字符或者序列不在字符串内,对于index--》ValueError: substring not found,而对于find -->返回 -1。

#!/usr/bin/env python

# -*- coding:utf-8 -*-

name = "little_five"

print(name.index("q",2))

#index--》输出为:

>>>Traceback (most recent call last):

File "C:/Users/28352/PycharmProjects/learning/Day13/test.py", line 5, in <module>

print(name.index("q",2))

ValueError: substring not found

print(name.find("q",2))

#find--》输出为:

>>> -1

 长度 -->len()

name = "little_five"

#获取字符串的长度

print(len(name))

#输出为:

>>> 11

 注:len()方法-->同样可以用于其他数据类型,例如查看列表、元组以及字典中元素的多少。

 删除 --> del

#删除字符串,也是删除变量

>>> name ="little-five"

>>> del name

>>> name

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

NameError: name 'name' is not defined

判断字符串内容 --> isalnum()、isalpha()、isdigit() 

#判断是否全为数字

>>> a ="123"

>>> a.isdigit()

True

>>> b ="a123"

>>> b.isdigit()

False

#判断是否全为字母

>>> d ="alx--e"

>>> d.isalpha()

False

>>> c ="alex"

>>> c.isalpha()

True

#判断是否全为数字或者字母

>>> e ="abc123"

>>> e.isalnum()

True

 大小写转换 --> capitalize()、lower()、upper()、title()、casefold()

#!/usr/bin/env python

# -*- coding:utf-8 -*-

#大小写的互相转换

>>> name ="little_five"

#首字母大写-->capitalize

>>> name.capitalize()

'Little_five'

#转为标题-->title

>>> info ="my name is little_five"

>>> info.title()

'My Name Is Little_Five'

#全部转为小写-->lower

>>> name ="LITTLE_FIVE"

>>> name.lower()

'little_five'

#全部转为大写-->upper

>>> name = "little_five"

>>> name.upper()

'LITTLE_FIVE'

#大小写转换-->swapcase

>>> name ="lIttle_fIve"

>>> name.swapcase()

'LiTTLE_FiVE'

判断以什么开头结尾 --> startswith()、endswith() 

#判断以什么开头、结尾

>>> name ="little-five"

#判断以什么结尾

>>> name.endswith("e")

True

#判断以什么开头

>>> name.startswith("li")

True

扩展-->expandtabs()

#expandtabs -->返回字符串中的 tab 符号('\t')转为空格后生成的新字符串。通常可用于表格格式的输出

info ="name\tage\temail\nlittlefive\t22\t994263539@qq.com\njames\t33\t66622334@qq.com"

print(info.expandtabs(10))

#输出为:

name age email

little-five 22 994263539@qq.com

james 33 66622334@qq.com

格式化输出-->format()、format_map()

#格式化输出-->format、format_map

#forma方法

#方式一

>>> info ="my name is {name},I'am {age} years old."

>>> info.format(name="little-five",age=22)

"my name is little-five,I'am 22 years old."

#方式二

>>> info ="my name is {0},I'am {1} years old."

>>> info.format("little-five",22)

"my name is little-five,I'am 22 years old."

#方式三

>>> info ="my name is {name},I'am {age} years old."

>>> info.format(**{"name":"little-five","age":22})

"my name is little-five,I'am 22 years old."

#format_map方法

>>> info ="my name is {name},I'am {age} years old."

>>> info.format_map({"name":"little-five","age":22})

"my name is little-five,I'am 22 years old."

jion方法

#join--> join(): 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串

#字符串

>>> name ="littefive"

>>> "-".join(name)

'l-i-t-t-e-f-i-v-e'

#列表

>>> info = ["xiaowu","say","hello","world"]

>>> "--".join(info)

'xiaowu--say--hello--world'

分割 --> split()、partition()

#分割,有两个方法-partition、split

#partition -->只能将字符串分为三个部分,生成列表

>>> name ="little-five"

>>> name.partition("-")

('little', '-', 'five')

#split-->分割字符串,并且可以指定分割几次,并且返回列表

>>> name ="little-five-hello-world"

>>> name.split("-")

['little', 'five', 'hello', 'world']

>>> name.split("-",2) #指定分割几次

['little', 'five', 'hello-world']

>>>

 替代 -->replace

#替代

>>> name ="little-five"

>>> name.replace("l","L")

'LittLe-five'

#也可以指定参数,替换几个

>>> name.replace("i","e",2)

'lettle-feve'

 清除空白 --> strip()、lstrip()、rstrip()

#去除空格

>>> name =" little-five "

#去除字符串左右两边的空格

>>> name.strip()

'little-five'

#去除字符串左边的空格

>>> name.lstrip()

'little-five '

#去除字符串右边的空格

>>> name.rstrip()

' little-five'

替换 -->makestran 、translate

1 #进行一一替换

2

3 >>> a ="wszgr"

4 >>> b="我是中国人"

5 >>> v =str.maketrans(a,b) #创建对应关系,并且两个字符串长度要求一致

6 >>> info ="I'm a Chinese people,wszgr"

7 >>> info.translate(v)

8 "I'm a Chine是e people,我是中国人"

4、列表 --->list类

列表是由一系列特定元素顺序排列的元素组成的,它的元素可以是任何数据类型即数字、字符串、列表、元组、字典、布尔值等等,同时其元素也是可修改的。

其形式为:

1 names = ['little-five","James","Alex"]

2 #或者

3 names = list(['little-five","James","Alex"])

索引、切片

1 #索引-->从0开始,而不是从一开始

2 name =["xiaowu","little-five","James"]

3 print(name[0:-1])

4

5

6 #切片-->负数为倒数第几个,其为左闭右开,如不写,前面表示包含前面所有元素,后面则表示后面所有元素

7 m1 =name[1:]

8 print(m1)

9 #输出为-->['little-five', 'James']

10 m2 =name[:-1]

11 print(m2)

12 #输出为-->['xiaowu', 'little-five']

追加-->append()

1 #追加元素-->append()

2 name =["xiaowu","little-five","James"]

3 name.append("alex")

4 print(name)

5

6 #输出为--》['xiaowu', 'little-five', 'James', 'alex']

拓展-->extend()

1 #扩展--》其将字符串或者列表的元素添加到列表内

2 #一、将其他列表元素添加至列表内

3 name =["xiaowu","little-five","James"]

4 name.extend(["alex","green"])

5 print(name)

6 #输出为-->['xiaowu', 'little-five', 'James', 'alex', 'green']

7

8 #二、将字符串元素添加到列表内

9 name =["xiaowu","little-five","James"]

10 name.extend("hello")

11 print(name)

12 #输出为-->xiaowu', 'little-five', 'James', 'alex', 'green', 'h', 'e', 'l', 'l', 'o']

13

14 #三、将字典元素添加至列表内,注:字典的key。

15 name =["xiaowu","little-five","James"]

16 name.extend({"hello":"world"})

17 print(name)

注:扩展extend与追加append的区别:-->前者为添加将元素作为一个整体添加,后者为将数据类型的元素分解添加至列表内。例:

1 #extend-->扩展

2 name =["xiaowu","little-five","James"]

3 name.extend(["hello","world"])

4 print(name)

5 输出为-->['xiaowu', 'little-five', 'James', 'hello', 'world']

6

7 #append -->追加

8 name.append(["hello","world"])

9 print(name)

10 输出为 -->['xiaowu', 'little-five', 'James', ['hello', 'world']]

insert() -->插入

1 #insert()插入-->可以指定插入列表的某个位置,前面提到过列表是有序的

2 name =["xiaowu","little-five","James"]

3 name.insert(1,"alex") #索引从0开始,即第二个

4 print(name)

pop() -->取出

1 #pop()--取出,可将取出的值作为字符串赋予另外一个变量

2 name =["xiaowu","little-five","James"]

3 special_name =name.pop(1)

4 print(name)

5 print(special_name,type(special_name))

6

7 #输出为:['xiaowu', 'James']

8 # little-five <class 'str'>

9

remove()-->移除、del -->删除

1 #remove -->移除,其参数为列表的值的名称

2 name =["xiaowu","little-five","James"]

3 name.remove("xiaowu")

4 print(name)

5

6 #其输出为:['little-five', 'James']

7

8 #del -->删除

9 name =["xiaowu","little-five","James"]

10 #name.remove("xiaowu")

11 del name[1]

12 print(name)

13

14 #其输出为:['xiaowu', 'James']

sorted()-->排序,默认正序,加入reverse =True,则表示倒序

1 #正序

2 num =[11,55,88,66,35,42]

3 print(sorted(num)) -->数字排序

4 name =["xiaowu","little-five","James"]

5 print(sorted(name)) -->字符串排序

6 #输出为:[11, 35, 42, 55, 66, 88]

7 # ['James', 'little-five', 'xiaowu']

8

9 #倒序

10 num =[11,55,88,66,35,42]

11 print(sorted(num,reverse=True))

12 #输出为:[88, 66, 55, 42, 35, 11]

5、元组 --->tuple类

元组即为不可修改的列表。其于特性跟list相似。其使用圆括号而不是方括号来标识。

#元组

name = ("little-five","xiaowu")

print(name[0])

6、字典 --->dict类

字典为一系列的键-值对,每个键值对用逗号隔开,每个键都与一个值相对应,可以通过使用键来访问对应的值。无序的。

键的定义必须是不可变的,即可以是数字、字符串也可以是元组,还有布尔值等。

而值的定义可以是任意数据类型。

#字典的定义

info ={

1:"hello world", #键为数字

("hello world"):1, #键为元组

False:{

"name":"James"

},

"age":22

}

遍历 -->items、keys、values

info ={

"name":"little-five",

"age":22,

"email":"99426353*@qq,com"

}

#键

for key in info:

print(key)

print(info.keys())

#输出为:dict_keys(['name', 'age', 'email'])

#键值对

print(info.items())

#输出为-->dict_items([('name', 'little-five'), ('age', 22), ('email', '99426353*@qq,com')])

#值

print(info.values())

#输出为:dict_values(['little-five', 22, '99426353*@qq,com'])

 7、集合 -->set类

关于集合set的定义:在我看来集合就像一个篮子,你可以往里面存东西也可往里面取东西,但是这些东西又是无序的,你很难指定单独去取某一样东西;同时它又可以通过一定的方法筛选去获得你需要的那部分东西。故集合可以 创建、增、删、关系运算。

集合的特性:

1、去重

2、无序

3、每个元素必须为不可变类型即(hashable类型,可作为字典的key)。

 创建:set、frozenset

1 #1、创建,将会自动去重,其元素为不可变数据类型,即数字、字符串、元组

2 test01 ={"zhangsan","lisi","wangwu","lisi",666,("hello","world",),True}

3 #或者

4 test02 =set({"zhangsan","lisi","wangwu","lisi",666,("hello","world",),True})

5

6 #2、不可变集合的创建 -->frozenset()

7 test =frozenset({"zhangsan","lisi","wangwu","lisi",666,("hello","world",),True})

 增: add、update

#更新单个值 --->add

names ={"zhangsan","lisi","wangwu"}

names.add("james") #其参数必须为hashable类型

print(names)

#更新多个值 -->update

names ={"zhangsan","lisi","wangwu"}

names.update({"alex","james"})#其参数必须为集合

print(names)

 删除:pop、remove、discard

#随机删除 -->pop

names ={"zhangsan","lisi","wangwu","alex","james"}

names.pop()

print(names)

#指定删除,若要删除的元素不存在,则报错 -->remove

names ={"zhangsan","lisi","wangwu","alex","james"}

names.remove("lisi")

print(names)

#指定删除,若要删除的元素不存在,无视该方法 -->discard

names ={"zhangsan","lisi","wangwu","alex","james"}

names.discard("hello")

print(names)

关系运算:交集 & 、并集 | 、差集 - 、交差补集 ^ 、 issubset 、isupperset

比如有两个班英语班和数学班,我们需要统计这两个班中报名情况,例如既报名了英语班有报名数学班的同学名字等等,这时候我们就可以应用到集合的关系运算:

english_c ={"ZhangSan","LiSi","James","Alex"}

math_c ={"WangWu","LiuDeHua","James","Alex"}

#1、交集--> in a and in b

#统计既报了英语班又报了数学班的同学

print(english_c & math_c)

print(english_c.intersection(math_c))

#输出为:{'Alex', 'James'}

#2、并集--> in a or in b

#统计报名了两个班的所有同学

print(english_c | math_c)

print(english_c.union(math_c))

#输出为:{'James', 'ZhangSan', 'LiuDeHua', 'LiSi', 'Alex', 'WangWu'}

#3、差集--> in a not in b

#统计只报名英语班的同学

print(english_c - math_c)

print(english_c.difference(math_c))

#输出为:{'LiSi', 'ZhangSan'}

4、交差补集

#统计只报名一个班的同学

print(english_c ^ math_c)

#输出为:{'LiuDeHua', 'ZhangSan', 'WangWu', 'LiSi'}

 判断两个集合的关系是否为子集、父集 --> issubset 、isupperset

#5、issubset-->n 是否为 m 的子集

# issuperset --> n 是否为 m 的父集

n ={1,2,4,6,8,10}

m ={2,4,6}

l ={1,2,11}

print(n >= m)

#print(n.issuperset(m)) #n 是否为 m的父集

#print(n.issuperset(l))

print(m <=n)

#print(m.issubset(n)) #m 是否为 n的子集

    推荐阅读
  • 苏州旅游攻略景点必去(苏州旅游必去景点有哪些)

    位于苏州市东北街一百七十八号,始建于明朝正德年间。虎丘是AAAAA级景区及全国文明单位,首批十佳文明风景旅游区示范点。中午,周庄最为欢闹,游人穿梭熙熙攘攘,船儿来回摇摇荡荡,各地的游客与热情的商铺融为一体,热闹非凡,安静的古镇着实多了些欢闹的气息。狮子林为苏州四大名园之一,位于苏州市市城东北园林路。

  • 买的玉米种子是瘪的(去年买的玉米种子剩了很多)

    去年买的陈玉米种子建议不要用针对去年的陈玉米种子,大多情况下不建议再次使用,会影响到玉米后期的生长和产量情况。陈年的因为保管的问题,可能会出现很多因素影响玉米的出苗率或者后期的生长。陈玉米种子隔了一年后再种植,种子自身水分含量降低,水分降低严重的情况下,影响播种的效率和玉米的后期生长,由于活性降低,即使能出芽,也不一定能出苗。

  • 173.2亿!国庆消费火爆 国庆消费市场

    今年国庆、重阳两节叠加,全省消费市场呈现平衡较快增长态势,服装、家电、汽车等商品消费亮点突出,大众餐饮、旅行休闲、文体娱乐等主要服务消费备受青睐。根据商务部业务统一平台生存必需品监测系统显示,国庆黄金周期间,全省生存必需品市场供应充沛,价格总体平衡。除了买买买,国庆还是婚庆、团圆、会友高峰,各地亲友聚餐、婚寿宴等大众化餐饮生意兴隆。

  • 吴承恩是怎么写出的西游记(吴承恩怎么写出的西游记)

    吴承恩怎么写出的西游记诸葛长青:吴承恩写西游记诸葛长青:吴承恩怎么写出的《西游记》西游记,广泛流传西游记,作者吴承恩西游记,包含了儒释道大智慧那么,吴承恩是怎么写出的《西游记》呢?诸葛长青把自己对吴承恩写《西游记》,研究成。

  • 李逵扮演者(大家一起来看看吧)

    我们一起去了解并探讨一下这个问题吧!李逵扮演者赵小锐的李逵应该算是很多人印象当中的经典所在了,他的李逵也是很粗犷,但是这种粗犷当中却带着细腻,也是因为这个角色,他开始受到了不少的观众的关注和喜爱。其实之前的他也有出演过一些电视剧的,但是可惜的是一直都没能够真正的红起来,是李逵这个角色,让他一夜成名爆火了。

  • 汽车空间大小怎么看轴距(什么因素会影响车内空间)

    大众速腾,长度4655mm,轴距2651mm。看外观就明白了,因为宝马320i是后驱车,发动机采用纵置布局;而大众速腾是前驱车,发动机采用横置布局。而且由于发动机纵置,后驱设计,对于车内空间侵占较为严重,所以宝马320的长轴距实际上对于空间的帮助是“虚高”的。前面我们就提到了,宝马3系采用了后驱,大众速腾采用了前驱。回到我们的主题,通常来说,麦弗逊与扭力梁对于车辆空间的侵占是最小的,而多连杆和双叉臂对于车辆空间侵占是要更大的。

  • 湖南省医保局2015年工作思路与安排 湖南省医疗保障局领导班子组成人员

    督促指导各统筹地区核实提高缴费基数,强化保险费足额征收。继续加强工伤认定参与,把好工伤入口关。认真核实、积极处理群众举报问题,始终保持高压态势。加强生育医疗服务管理,规范生育津贴发放。二是启动实施工伤保险信息系统改造升级,改进工伤职工异地就医联网结算,方便工伤职工救治。三是加强财务、业务数据清理,提高数据质量;通报全省“三险”基金运行分析,指导市州加强基金运行风险管控。

  • 民国最渣四大渣男(民国著名4大渣男)

    当时很多文人在接受自由恋爱的思想时,家中已经有了父母为之安排的妻子。郁达夫一生有过三位妻子,一位同居情人。郁达夫后来还是和王映霞离婚,1940年在新加坡认识了比他小20岁的播音员李莜英,两人很快就同居了。第二任妻子佐藤富子,是个日本女人,为了和郭沫若在一起,不仅改名为“郭安娜”,还和父母断绝了关系。1937年,郭沫若抛弃妻子回国,和女明星于立群同居,两人于2年后再重庆结婚。

  • 电脑怎么连打印机教程(教会你快速学会电脑如何连接打印机的安装使用方法)

    最近很多网友都在私信给小编,小编也无法一一回复,有些问题也无法简约介绍,所以只能在头条文章内与大家共享。

  • 爱吃鸡蛋的注意了这3种鸡蛋不能买(这些鸡蛋没你想的那么好)

    营养均衡的孩子没必要补这种元素;真正缺乏硒,靠富硒蛋补,根本起不了多大作用。这类蛋再好,也别给孩子吃那就是全生或半熟的蛋,比如溏心蛋。一般溏心蛋的加热时间短,不能完全杀死细菌,生蛋液根本没有处理细菌,对于抵抗力低、易感染的宝宝来说,非常容易被细菌感染。