Python基础之数据类型详解
为什么会有数据类型?
在介绍具体的数据类型之前,需要了解为什么需要区分数据类型。我们知道,一个公司会有很多个大的部门,每个部门下又会有许多细分的小部门,构成了公司的完整体系结构。如果把python的数据整体看做是一个公司,那么数据下面会有几个大部门——基本数据类型,而在每个大部门下还有众多小部门——内置方法及功能,每一条数据就像一个员工,会在不同的部门发挥作用。公司有这样的层级是为了提升管理效果,同理,python区分数据类型也是为了:更好的管理内存、便于管理数据,便有人类理解。
为了更好的说明,各种数字类型将按照下面的格式说明:
在这里插入代码片
#=基本使用===
#1、用途
#2、定义方式
#3、常用操作+内置的方法
#该类型总结
#存一个值or存多个值
#有序or无序
#可变or不可变(1、可变:值变,id不变。可变不可hash 2、不可变:值变,id就变。不可变==可hash)
整型(int)
-
用途
整数类型就是用来表示年龄、年份等这些由数学上的整数构成的数据类型 -
定义方式
x = 10 # x = int(10)
由上面的定义方式可知,可以通过int()来转换整数类型,但是需要注意:只有全部由数字组成的字符串,才能转换成整型,数字两边可以有空格,但是数字字符间不允许有其他任意符号
示例1: -
常用操作+内置的方法
整型没有太多操作与内置方法,常用的就是算术运算、比较运算、逻辑运算等,此处不做过多讲解 -
总结
存放一个值
不可变类型
浮点型(float)
-
用途
整数类型就是用来表示身高、薪资等用小数表示的数据类型 -
定义方式
x = 4.3 # x = float(4.3)
由上面的定义方式可知,可以通过float()来转换浮点数类型,浮点数类型不仅可以将只包含小数的字符串转化成浮点型,字符串内包含整数也是可以转化的。 -
常用操作+内置的方法
浮点型没有太多操作与内置方法,常用的就是算术运算、比较运算、逻辑运算等,此处不做过多讲解 -
总结
存放一个值
不可变类型
字符串类型(str)
1.用途
用于记录描述性质的状态
2.定义方式
在"",’’,""" “”",’’’ ‘’'内包含一串字符
字符串转化:字符串可以将任何类型的数据转化成字符串。
3、常用操作+内置的方法
首先是我们最常用的一些操作和方法
-
按照索引取值,可取不可改
-
切片,顾头不顾尾,可以指定步长
-
长度len()
返回字符串的长度 -
成员运算in 和 not in
判断子字符串是否包含在原字符串中,返回布尔值 -
移除特殊符号stirp()
默认字符串两头移除空格,挡在strip中指定参数后,可移除字符串两头的相应元素 -
切分split()
根据字符串内部有规律的符号,将字符串切分成一个包含多个元素的列表 -
字符串和可以通过for循环遍历每一个字符
8、一些常用的方法
# stirp、lstrip、rstrip,都可以实现移除特殊字符
msg = "****123****"
msg.strip("*") # 移除两头的"*": "123"
msg.lstrip("*") # 移除左边的"*": "123****"
msg.rstrip("*") # 移除右边的"*": "****123"
# split、rsplit
msg = "12:23:34:56:78"
msg.split(":",2) # 从左边,按照":"分隔符,切分两次:
# ['12','23','34:56:78']
msg.rsplit(":",2) # 从右边,按照":"分隔符,切分两次:
# ['12:23:34','56','78']
# lower、upper 大小写转换
msg = "Wo SHI XiGazhi"
msg.lower() # 全小写:"wo shi xiguazhi"
msg.upper() # 全大写:"WO SHI XIGUAZHI"
# startswith、endswith,判断开头或者结尾元素,返回布尔值
msg = "dsfgksdhal"
msg.startswith("dsf") # >>>Trueu
msg.endswith("hl") # >>>False
# join(),拼接字符串类型,类似:字符串+字符串
msg = ['sd','saf','fbbdf']
":".join(msg) # 将msg中的字符串用":"连接起来,相当于split()反向操作
# replace(原值,新值,替换次数),复制原有字符串,并将用新元素更新原来的元素,返回新的字符串
msg = "wo shi ha ha shi wo ni shi"
msg.replace("shi","bushi",2) # 用"bushi"替换"shi",替换两次:
# "wo bushi ha ha bushi wo ni shi"
print(msg.replace("ha","xi")) # 默认全部替换:"wo shi xi xi shi wo ni shi"
# isdight,判断字符串是否全部由数字组成,返回布尔值
x = b"4" # 字节串
y = "4" # 阿拉伯数字4
z = "四" # 中文汉字四
m = "Ⅳ" # 罗马数字Ⅳ
x.isdigit() # True,字节串认为是全部由数字组成
y.isdigit() # True,阿拉伯数字认为是数字
z.isdigit() # False,中文汉字不是数字类型
m.isdigit() # False,罗马数字不是数字类型
# format方法,对字符串进行格式化
x = "zhang"
y = 20
"wo shi {} age {}".format(x,y) # 将x,y顺序填充进{}:"wo shi zhang age 20"
"wo shi {y} age {x}".format(x,y) # 不再顺序填充,根据变量填充:
# "wo shi 20 age zhang"
"wo shi {0} {1} {0}".format(x,y) # 将按照索引,把对应的x,y填充:
# "wo shi zhang 20 zhang"
9.一些不常用,但是需要知道的方法
```python
#1、find,rfind,index,rindex,count
msg = "hello zhang xxx zhang yyy zhang zzz"
msg.find("zhang",0,5) # 查找字符串中子字符串第一次出现时的索引,可以指定查找范围(0,5),没有不会报错: > None
msg.find("zhang") # 默认检索整个字符串: > 6
msg.rfind("zhang") # 从右边开始检索,可以指定检索范围: > 26
# msg.index("zhang",1,5) # 和find几乎一样,唯一区别是未找到报错: > 报错
msg.rindex("zhang") # 和find几乎一样,未找到报错: > 6
msg.count("zhang",1,20) # 计算子字符串出现了几次,可以指定检索范围: > 2
# center,ljust,rjust,zfill
msg = "*"
msg.center(20," ") # 指定输入宽度为20,"*"居中显示,其余用空格填充:
# " * "
msg.ljust(20,"0") # 指定输入宽度为20,居左显示,其余用0填充:
# *000000000000000000
msg.rjust(20,"-") # 居右显示,宽度为20,其余用"-"填充:
# ------------------*
msg.zfill(20) # 居右显示,默认用0填充,等价于:msg.rjust(20,"0")
# captalize,swapcase,title
msg = "hellO woRld"
msg.capitalize() # 字符串首字母大写: Hello world
msg.swapcase() # 两级反转,大小写互换: HELLo WOrLD
msg.title() # 单词首字母大写: Hello World
#、is数字系列
num1=b'4' #bytes
num2='4' # 阿拉伯数字
num3='四' #中文数字
num4='Ⅳ' #罗马数字
# 1、变量值是字节串或字符串类型并且包含的阿拉伯数字,isdigit()结果才为真
print(num1.isdigit())
print(num2.isdigit())
print(num3.isdigit())
print(num4.isdigit())
# 2、变量值是字符串类型并且包含的阿拉伯数字,isdecimal()结果才为真
print(num2.isdecimal())
print(num3.isdecimal())
print(num4.isdecimal())
# 3、变量值是字符串类型并且包含的阿拉伯数字\中文数字\罗马数字,isdecimal()结果才为真
print(num2.isnumeric())
print(num3.isnumeric())
print(num4.isnumeric())
#5、is其他
name='egon123'
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成
4、总结
存放一个值
不可变类型
列表(list)
元组(tuple)
字典(dict)
咱们下期见!