小白学Python:Python的基本数据类型
前言
我的征途——是星程大海!
有多少路我将行走,有多少山峰我将为了寻找自己而去征服,有多少次我将失败,有多少次我将重新开始,而这一切是否有意义,我会耐心等待,我为自己准备,那通向我梦想和希望的旅程。不要燃尽自己,我的星辰,请等我。
今天博主跟大家聊一聊如何使用Python的基本数据类型不喜勿喷,如有建议欢迎补充、讨论!
关于安装和汉化可以观看博主的这篇文章《VsCode下载安装及汉化 》以及Python系列:windows10配置Python3.0开发环境!,安装完毕重启VsCode!
在了解基本数据类型的时候,我们需要了解基本数据类型有哪些?数字int、布尔值bool、字符串str、列表list、元组tuple、字典dict等,其中包括他们的基本用法和其常用的方法,这里会一一列举出来,以便参考。然后我们还需要了解一些运算符,因为这些基本数据类型常常会用于一些运算等等。
Come on!基本数据类型
1、数字 --->int类
当然对于数字,Python的数字类型有int整型、long长整型、float浮点数、complex复数、以及布尔值(0和1),这里只针对int整型进行介绍学习。
在Python2中,整数的大小是有限制的,即当数字超过一定的范围不再是int类型,而是long长整型,而在Python3中,无论整数的大小长度为多少,统称为整型int。
其主要方法有以下两种:
int-->将字符串数据类型转为int类型, 注:字符串内的内容必须是数字
s = '123'
i = int( s )
print( i)
bit_length()-->将数字转换为二进制,并且返回最少位二进制的位数
i =123
print( i.bit_length() )
#输出结果为:
>>>7
2、布尔值 --->bool类
对于布尔值,只有两种结果即True和False,其分别对应与二进制中的0和1。而对于真即True的值太多了,我们只需要了解假即Flase的值有哪些---》None、空(即 [ ]/( ) /" "/{ })、0;
'''
@name: Sunny Chen
@test: test font
@msg: 这是由Sunny Chen创建.
@param:
@return:
'''
#以下结果为假,即None、‘’、[]、()、{}以及 0
>>> bool(None)
False
>>> bool('')
False
>>> bool([])
False
>>> bool(0)
False
>>> bool(())
False
>>> bool({})
False
3、字符串 --->str类
关于字符串是Python中最常用的数据类型,其用途也很多,我们可以使用单引号 ‘’或者双引号“”来创建字符串。
字符串是不可修改的。所有关于字符我们可以从 索引、切片、长度、遍历、删除、分割、清除空白、大小写转换、判断以什么开头等方面对字符串进行介绍。
创建字符串
'''
@name: Sunny Chen
@test: test font
@msg: 这是由Sunny Chen创建.
@param:
@return:
'''
name ='mr_chen'
print(name)
切片
>>> name ="mr_chen"
>>> name[1]
'i'
>>> name[0:-2] #从第一个到倒数第二个,不包含倒数第二个
'mr_ch'
索引-->index()、find()
'''
@name: Sunny Chen
@test: test font
@msg: 这是由Sunny Chen创建.
@param:
@return:
'''
name = "mr_chen"
#index-->获取索引,第二个参数指定获取该子字符或者子序列的第几个
print(name.index("l",2))
#find -->其作用与index相似
print(name.find("l",2))
index()与find()的不同之处在于:若索引的该字符或者序列不在字符串内,对于index--》ValueError: substring not found,而对于find -->返回 -1。
>>> name = "mr_chen"
>>> print(name.index("q",2))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
print(name.find("s",2))
#find--》输出为:
>>> -1
长度 -->len()
name = "mr_chen"
#获取字符串的长度
print(len(name))
#输出为:
>>> 7
注:len()方法-->同样可以用于其他数据类型,例如查看列表、元组以及字典中元素的多少。
删除 -->del
#删除字符串,也是删除变量
>>> name ="mr-chen"
>>> 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()
#大小写的互相转换
>>> name ="mr-chen"
#首字母大写-->capitalize
>>> name.capitalize()
'Mr-chen'
#转为标题-->title
>>> info ="my name is mr-chen"
>>> info.title()
'My Name Is Mr-Chen'
#全部转为小写-->lower
>>> name ="MR-CHEN"
>>> name.lower()
'mr-chen'
#全部转为大写-->upper
>>> name = "mr-chen"
>>> name.upper()
'MR-CHEN'
#大小写转换-->swapcase
>>> name ="mr-chen"
>>> name.swapcase()
'MR-CHEN'
判断以什么开头结尾 -->startswith()、endswith()
#判断以什么开头、结尾
>>> name ="mr-chen"
#判断以什么结尾
>>> name.endswith("n")
True
#判断以什么开头
>>> name.startswith("mr")
True
扩展-->expandtabs()
#expandtabs -->返回字符串中的 tab 符号('\t')转为空格后生成的新字符串。通常可用于表格格式的输出
info ="name\tage\temail\nmrchen\t22\867647213@qq.com\nsunny\t33\chen867647213@163.com"
print(info.expandtabs(10))
>>> print(info.expandtabs(10))
name age email
mrchen 22\867647213@qq.com
sunny 33\chen867647213@163.com
格式化输出-->format()、format_map()
#分割,有两个方法-partition、split
#partition -->只能将字符串分为三个部分,生成列表
>>> name ="mr_chen"
>>> name.partition("-")
('mr_chen', '', '')
>>> name.partition("_")
('mr', '_', 'chen')
#split-->分割字符串,并且可以指定手机号交易平台分割几次,并且返回列表
>>> name="mr-chen-hello-baby!"
>>> name.split("-")
['mr', 'chen', 'hello', 'baby!']
>>> name.split("-",2) #指定分割几次
['mr', 'chen', 'hello-baby!']
>>>
替代 -->replace
#替代
>>>name="mr-chen"
>>>name.replace("h","H")
'mr-cHen'
#也可以指定参数,替换几个
>>>name.replace("m","e",2)
'er-chen'
>>>
清除空白 -->strip()、lstrip()、rstrip()
#去除空格
>>>name="mr-chen"
#去除字符串左右两边的空格
>>>name.strip()
'mr-chen'
#去除字符串左边的空格
>>>name.lstrip()
'mr-chen'
#去除字符串右边的空格
>>>name.rstrip()
'mr-chen'
>>>
替换 -->makestran 、translate
#进行一一替换
>>>a="wszgr"
>>>b="我是中国人"
>>>v=str.maketrans(a,b)#创建对应关系,并且两个字符串长度要求一致
>>>info="I'maChinesepeople,wszgr"
>>>info.translate(v)
"I'maChine是epeople,我是中国人"
>>>
4、列表 --->list类
列表是由一系列特定元素顺序排列的元素组成的,它的元素可以是任何数据类型即数字、字符串、列表、元组、字典、布尔值等等,同时其元素也是可修改的。
其形式为:
names=['mr-chen","Sunny","Alex"]
#或者
names=list(['mr-chen","Sunny","Alex"])复制代码
索引、切片
#索引-->从0开始,而不是从一开始
name=["xiaojia","mr-chen","Sunny"]
print(name[0:-1])
#切片-->负数为倒数第几个,其为左闭右开,如不写,前面表示包含前面所有元素,后面则表示后面所有元素
m1=name[1:]
print(m1)
#输出为-->['mr-chen','Sunny']
m2=name[:-1]
print(m2)
#输出为-->['xiaojia','Sunny']
追加-->append()
#追加元素-->append()
name=["xiaojia","mr-chen","Sunny"]
name.append("alex")
print(name)
#输出为--》['xiaojia','mr-chen','Sunny','alex']复制代码
拓展-->extend()
#扩展--》其将字符串或者列表的元素添加到列表内
#一、将其他列表元素添加至列表内
name=["xiaojia","mr-chen","Sunny"]
name.extend(["alex","green"])
print(name)
#输出为-->['xiaojia','mr-chen','Sunny','alex','green']
#二、将字符串元素添加到列表内
name=["xiaojia","mr-chen","Sunny"]
name.extend("hello")
print(name)
#输出为-->xiaojia','mr-chen','Sunny','alex','green','h','e','l','l','o']
#三、将字典元素添加至列表内,注:字典的key。
name=["xiaojia","mr-chen","Sunny"]
name.extend({"hello":"world"})
print(name)复制代码
注:扩展extend与追加append的区别:-->前者为添加将元素作为一个整体添加,后者为将数据类型的元素分解添加至列表内。例:
#extend-->扩展
name=["xiaojia","mr-chen","Sunny"]
name.extend(["hello","world"])
print(name)
输出为-->['xiaojia','mr-chen','Sunny','hello','world']
#append-->追加
name.append(["hello","world"])
print(name)
输出为-->['xiaojia','mr-chen','Sunny',['hello','world']]
insert()-->插入
#insert()插入-->可以指定插入列表的某个位置,前面提到过列表是有序的
name=["xiaojia","mr-chen","Sunny"]
name.insert(1,"alex")#索引从0开始,即第二个
print(name)复制代码
pop()-->取出
#pop()--取出,可将取出的值作为字符串赋予另外一个变量
name=["xiaojia","mr-chen","Sunny"]
special_name=name.pop(1)
print(name)
print(special_name,type(special_name))
#输出为:['xiaojia','Sunny']
#mr-chen<class'str'>复制代码
remove()-->移除、del-->删除
#remove-->移除,其参数为列表的值的名称
name=["xiaojia","mr-chen","Sunny"]
name.remove("xiaojia")
print(name)
#其输出为:['mr-chen','Sunny']
#del-->删除
name=["xiaojia","mr-chen","Sunny"]
#name.remove("xiaojia")
delname[1]
print(name)
#其输出为:['xiaojia','Sunny']
sorted()-->排序,默认正序,加入reverse =True,则表示倒序
#正序
num=[11,55,88,66,35,42]
print(sorted(num))-->数字排序
name=["xiaojia","mr-chen","Sunny"]
print(sorted(name))-->字符串排序
#输出为:[11,35,42,55,66,88]
#['Sunny','mr-chen','xiaojia']
#倒序
num=[11,55,88,66,35,42]
print(sorted(num,reverse=True))
#输出为:[88,66,55,42,35,11]复制代码
5、元组 --->tuple类
元组即为不可修改的列表。其于特性跟list相似。其使用圆括号而不是方括号来标识
#元组
name=("mr-chen","xiaojia")
print(name[0])复制代码
6、字典 --->dict类
字典为一系列的键-值对,每个键值对用逗号隔开,每个键都与一个值相对应,可以通过使用键来访问对应的值。无序的。
键的定义必须是不可变的,即可以是数字、字符串也可以是元组,还有布尔值等。
而值的定义可以是任意数据类型。
#字典的定义
info={
1:"helloworld",#键为数字
("helloworld"):1,#键为元组
False:{
"name":"Sunny"
},
"age":22
}复制代码
遍历 -->items、keys、values
info={
"name":"mr-chen",
"age":21,
"email":"867647213@qq,com"
}
#键
forkeyininfo:
print(key)
print(info.keys())
#输出为:dict_keys(['name','age','email'])
#键值对
print(info.items())
#输出为-->dict_items([('name','mr-chen'),('age',21),('email','867647213@qq,com')])
#值
print(info.values())
#输出为:dict_values(['mr-chen',21,'867647213@qq,com'])复制代码
7、集合 -->set类
关于集合set的定义:在我看来集合就像一个篮子,你可以往里面存东西也可往里面取东西,但是这些东西又是无序的,你很难指定单独去取某一样东西;同时它又可以通过一定的方法筛选去获得你需要的那部分东西。故集合可以 创建、增、删、关系运算。
集合的特性:
1、去重
2、无序
3、每个元素必须为不可变类型即(hashable类型,可作为字典的key)。
创建:set、frozenset
#1、创建,将会自动去重,其元素为不可变数据类型,即数字、字符串、元组
test01={"zhangsan","lisi","wangwu","lisi",666,("hello","world",),True}
#或者
test02=set({"zhangsan","lisi","wangwu","lisi",666,("hello","world",),True})
#2、不可变集合的创建-->frozenset()
test=frozenset({"zhangsan","lisi","wangwu","lisi",666,("hello","world",),True})复制代码
增:add、update
#更新单个值--->add
names={"zhangsan","lisi","wangwu"}
names.add("sunny")#其参数必须为hashable类型
print(names)
#更新多个值-->update
names={"zhangsan","lisi","wangwu"}
names.update({"alex","sunny"})#其参数必须为集合
print(names)复制代码
删除:pop、remove、discard
#随机删除-->pop
names={"zhangsan","lisi","wangwu","alex","sunny"}
names.pop()
print(names)
#指定删除,若要删除的元素不存在,则报错-->remove
names={"zhangsan","lisi","wangwu","alex","sunny"}
names.remove("lisi")
print(names)
#指定删除,若要删除的元素不存在,无视该方法-->discard
names={"zhangsan","lisi","wangwu","alex","sunny"}
names.discard("hello")
print(names)复制代码
关系运算:交集 & 、并集 | 、差集 - 、交差补集 ^ 、 issubset 、isupperset
比如有两个班英语班和数学班,我们需要统计这两个班中报名情况,例如既报名了英语班有报名数学班的同学名字等等,这时候我们就可以应用到集合的关系运算:
english_c={"ZhangSan","LiSi","Sunny","Alex"}
math_c={"WangWu","LiuDeHua","Sunny","Alex"}
#1、交集-->inaandinb
#统计既报了英语班又报了数学班的同学
print(english_c&math_c)
print(english_c.intersection(math_c))
#输出为:{'Alex','Sunny'}
#2、并集-->inaorinb
#统计报名了两个班的所有同学
print(english_c|math_c)
print(english_c.union(math_c))
#输出为:{'Sunny','ZhangSan','LiuDeHua','LiSi','Alex','WangWu'}
#3、差集-->inanotinb
#统计只报名英语班的同学
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的子集复制代码
更多相关文章
- android 中使用TextView实现分段显示不同颜色的字符串
- 重定向android log
- exp: 修改Android中strings.xml文件, 动态改变数据
- Android(安卓)编程下通过 zipalign 对 APK 文件进行优化
- Android(安卓)中数据库查询方法 query() 中的 select
- android中SqLite query中用selectionArgs处理字符传值
- 修改系统Android版本,版本号
- 获取Android系统信息
- android读取工程里文件并显示在界面