python基础
一、数据类型
1、程序的本质就是驱使计算机去处理各种状态的变化,这些状态分为很多种
例如英雄联盟游戏,一个人物角色有名字,钱,等级,装备等特性,大家第一时间会想到这么表示
名字:德玛西亚------------>字符串
钱:10000 ------------>数字
等级:15 ------------>数字
装备:鞋子,日炎斗篷,兰顿之兆---->列表
(记录这些人物特性的是变量,这些特性的真实存在则是变量的值,存不同的特性需要用不同类型的值)
2、python中的数据类型
python使用对象模型来存储数据,每一个数据类型都有一个内置的类,每新建一个数据,实际就是在初始化生成一个对象,即所有数据都是对象
对象三个特性
- 身份:内存地址,可以用id()获取
- 类型:决定了该对象可以保存什么类型值,可执行何种操作,需遵循什么规则,可用type()获取
- 值:对象保存的真实数据
注:我们在定义数据类型,只需这样:x=1,内部生成1这一内存对象会自动触发,我们无需关心
1、数字
定义:a=1
特性:
1.只能存放一个值
2.一经定义,不可更改
3.直接访问
分类:整型,长整型,布尔,浮点,复数
整型:
Python的整型相当于C中的long型,Python中的整数可以用十进制,八进制,十六进制表示。
>>> 10 10 --------->默认十进制 >>> oct(10) '012' --------->八进制表示整数时,数值前面要加上一个前缀“0” >>> hex(10) '0xa' --------->十六进制表示整数时,数字前面要加上前缀0X或0x
python2.*与python3.*关于整型的区别
python2.*
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
python3.*整形长度无限制
布尔bool:
True 和False
1和0
浮点数float:
Python的浮点数就是数学中的小数,类似C语言中的double。
在运算中,整数与浮点数运算的结果是浮点数
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,
一个浮点数的小数点位置是可变的,比如,1.23*109和12.3*108是相等的。
浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,
就必须用科学计数法表示,把10用e替代,1.23*109就是1.23e9,或者12.3e8,0.000012
可以写成1.2e-5,等等。
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的而浮点数运算则可能会有
四舍五入的误差。
复数complex:
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
注意,虚数部分的字母j大小写都可以,
>>> 1.3 + 2.5j == 1.3 + 2.5J True
数字相关内建函数
2、字符串
定义:它是一个有序的字符的集合,用于存储和表示基本的文本信息,‘’或“”或‘’‘ ’‘’中间包含的内容称之为字符串
特性:
1.只能存放一个值
2.不可变
3.按照从左到右的顺序定义字符集合,下标从0开始顺序访问,有序
补充:
1.字符串的单引号和双引号都无法取消特殊字符的含义,如果想让引号内所有字符均取消特殊意义,在引号前面加r,如name=r'l\thf'
2.unicode字符串与r连用必需在r前面,如name=ur'l\thf'
字符串常用操作:
移除空白
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 res='hello world ' 2 print(res.strip()) 3 hello world #移除字符串后面的空白
分割
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 print(res.split()) 2 ['hello', 'world']
长度
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 res='hello world ' 2 print(len(res))
索引
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 res='hello world ' 2 print(res[4])
切片
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 res='hello world ' 2 print(res[1:4])
字符串函数str():
center(self, width, fillchar=None): 内容居中,width:总长度;fillchar:空白处填充内容,默认无
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 a1 = 'alex' 2 ret = a1.center(20,'_') 3 print(ret)
capitalize:首字母变大写
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = 'zzn' 2 s.capitalize() 3 print(s)
expandtabs(self, tabsize=None): """ 将tab转换成空格,默认一个tab转换成8个空格 """
1 content = 'hello\t999' 2 print(content) 3 print(content.expandtabs()) 4 print(content.expandtabs(20))
View Code
join(self, iterable): """ 连接 """
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 li = ['alex','eric'] 2 s = '****'.join(li) 3 print(s)
count:统计单词或字母出现的次数
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = 'zzn,wew,232f,zzn' 2 print(s.count('zzn'))
split:默认以空格分隔,可以添加任意字符进行分隔 变成list类型
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = 'zz n,we w,23 2f,zzn' 2 ret = s.split() 3 print(ret,type(ret))
strip:默认删除开头以及结尾的空格 可以添加数值、删除及结尾相同数值
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = ' zz n,we w,2 3 2f,zzn ' 2 print(s.strip())
index:查询任意数值在字符串里所在的位置 有相同的只会寻找到第一个的位置 查询不到则报错
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = 'zzn,we w,232f,zzn' 2 print(s.index('z'))
riindex:查询任意数值在字符串里所在的位置 有相同的只会寻找到最后一个的位置 查询不到则报错
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = 'zzn,we w,232f,zzn' 2 print(s.rindex('z'))
find:询任意数值在字符串里所在的位置 有相同的只会寻找到第一个的位置、没有则返回-1
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = 'zzn,we w,232f,zzn' 2 print(s.find('2'))
rfind:询任意数值在字符串里所在的位置 有相同的只会寻找到最后一个的位置、没有则返回-1
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = 'zzn,we w,232f,zzn' 2 print(s.rfind('z'))
replace(oldstr, newstr, [count]) :把oldstr替换为newstr,count为替换次数。这是替换的通用形式
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = 'oldstr,we w,232f,zzn' 2 print(s.replace('oldstr','newstr'))
这些函数返回的都是bool值:
startwith: 至少一个字符,判断是否以XX开头是的话返回True 否则返回False
endwith: 至少一个字符,判断是否以XX结尾是的话返回True 否则返回False
isalnum: 至少一个字符,且都是字母或数字才返回True 否则返回False
isalpha:至少一个字符,且都是字母才返回True 否则返回False
isdigit:至少一个字符,且都是数字才返回True 否则返回False
isspace:至少有一个字符,且都是空白字符猜返回True 否则返回False
islower:至少有一个字符,且都是小写才返回True 否则返回False
isupper:至少有一个字符,且都是大写才返回True 否则返回False
istitle:至少有一个字符,且首字母是大写才返回True 否则返回Fales
sistitle:至少有一个字符,是以标题开头才返回True 否则返回Fales
格式化字符串:
s='name:{},age:{},sex:{}'
print(s.format('ogen',18,'male','asdasda'))#多余的参数不会影响结果,少参数会报错。
3、列表
定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素
特性:
1.可存放多个值
2.可修改指定索引位置对应的值,可变
3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问,有序
列表创建
list_test=[’lhf‘,12,'ok']
或
list_test=list('abc')
或
list_test=list([’lhf‘,12,'ok'])
列表常用操作
索引
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = [11,22,33,44,55,'tt'] 2 print(s[3])
切片
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = [11,22,33,44,55,'tt'] 2 print(s[0:3])
追加
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = [11,22,33,44,55,'tt'] 2 s.append('zzn') 3 print(s)
删除
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = [11,22,33,44,55,'tt'] 2 print(s.pop(2)) #返回值是删除本身 3 print(s)
长度
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = [11,22,33,44,55,'tt'] 2 print(len(s))
循环
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = [11,22,33,44,55,'tt'] 2 for i in s: 3 print(i)
包含
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = [11,22,33,44,55,'tt'] 2 print('zz' in s) #不在返回False 3 print('tt' in s) #在返回True
通过索引取的某一个元素,通过切片取多个或一个元素,自己原来是什么类型,取得元素就是什么类型
列表函数
.copy() 复制
.append() 在列表后增加元素
.insert() 在索引号前增加元素
.pop() 默认从后面删除元素
.remove() 按照元素进行删除
.index() 按照元素进行查找
.clear() 清楚列表元素,原列表为空
.count() 查找元素的个数
.extend([1,2,3]) 扩展列表,将[1,2,3]列表和原列表合成一个列表
.reverse() 将列表进行倒序
.sort() 将列表中的元素按顺序排列。字符创和数字不能同时排序。.sort(reverse=True)倒序排列。
多层嵌套
li = ["alex","eric","seven",123]
li = ["alex",123,{"k1":"v1","k2":{"vv":(11,22,123),"ii":456}}]
li[2] --> {"k1":"v1","k2":{"vv":(11,22,123),"ii":456}}
li[2]["k2"]--> {"vv":(11,22,123),"ii":456}
li[2]["k2"]["vv"]--> (11,22,123)
li[2]["k2"]["vv"][2]
4、tuple元组
定义:与列表类似,只不过[]改成()
特性:
1.可存放多个值
2.不可变
3.按照从左到右的顺序定义元组元素,下标从0开始顺序访问,有序
元组创建
ages = (11, 22, 33, 44, 55)
或
ages = tuple((11, 22, 33, 44, 55))
元组常用操作
索引
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = (11, 22, 33, 44, 55) 2 print(s[0])
切片
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = (11, 22, 33, 44, 55) 2 print(s[0:])
循环
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = (11, 22, 33, 44, 55) 2 for i in s: 3 print(i)
包含
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 s = (11, 22, 33, 44, 55) 2 print(11 in s) #包含返回True 3 print(6 in s) #不包含返回False
元组函数
count
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 功能:统计元组中某元素的个数 2 语法:T.count(value) -> integer -- return number of occurrences of value 3 T = ('a','b','c','d',1,2,2,3,4) 4 T.count(2) 5 结果:2
index
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 功能:获取元素在元组中的索引值,对于重复的元素,默认获取从左起第一个元素的索引值 2 语法:T.index(value, [start, [stop]]) -> integer -- return first index of value.Raises ValueError if the value is not present. 3 T = ('a','b',2,'c','d',1,2,3,4) 4 T.index(2) 5 结果:2 #元素2第一次出现在索引为2的位置 6 T.index(2,3,7) 7 结果:6
嵌套(元素不可修改)
t = (11,22,33)
t = (11,22,["alex",{"k1":"v1"}])
t[2][1]["k1"]
得到数值:v1
元组的特性,不可修改,谁不可被修改
整理:
一般字符串,执行一个功能,生产一个新内容,原来内容不变
list,tuple,dict,执行一个功能,自身进行变化
5、字典
定义:{key1:value1,key2:value2},key-value结构,key必须可hash
特性:
1.可存放多个值
2.可修改指定key对应的值,可变
3.无序
![](https://images2015.cnblogs.com/blog/1104536/201706/1104536-20170611131010872-1271735025.png)
![](https://images2015.cnblogs.com/blog/1104536/201706/1104536-20170611131044372-1738383328.png)
![](https://images2015.cnblogs.com/blog/1104536/201706/1104536-20170611131101184-383793182.png)
![](https://images2015.cnblogs.com/blog/1104536/201706/1104536-20170611131118809-56368346.png)