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'

字符串常用操作:

移除空白
1 res='hello world      '
2 print(res.strip())
3 hello world  #移除字符串后面的空白
View Code
分割  
1 print(res.split())
2 ['hello', 'world']
View Code
长度
1 res='hello world      '
2 print(len(res))
View Code
索引 
1 res='hello world      '
2 print(res[4])
View Code
切片
1 res='hello world      '
2 print(res[1:4])
View Code

 字符串函数str():

center(self, width, fillchar=None):  内容居中,width:总长度;fillchar:空白处填充内容,默认无

1 a1 = 'alex'
2 ret = a1.center(20,'_')
3 print(ret)
View Code

capitalize:首字母变大写

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): """ 连接 """

1 li = ['alex','eric']
2 s = '****'.join(li)
3 print(s)
View Code

count:统计单词或字母出现的次数

1 s = 'zzn,wew,232f,zzn'
2 print(s.count('zzn'))
用法

split:默认以空格分隔,可以添加任意字符进行分隔          变成list类型

1 s = 'zz n,we w,23 2f,zzn'
2 ret = s.split()
3 print(ret,type(ret))
用法

strip:默认删除开头以及结尾的空格   可以添加数值、删除及结尾相同数值

1 s = '   zz n,we w,2   3 2f,zzn         '
2 print(s.strip())
用法

index:查询任意数值在字符串里所在的位置  有相同的只会寻找到第一个的位置  查询不到则报错

1 s = 'zzn,we w,232f,zzn'
2 print(s.index('z'))
用法

riindex:查询任意数值在字符串里所在的位置  有相同的只会寻找到最后一个的位置  查询不到则报错

1 s = 'zzn,we w,232f,zzn'
2 print(s.rindex('z'))
用法

find:询任意数值在字符串里所在的位置  有相同的只会寻找到第一个的位置、没有则返回-1

1 s = 'zzn,we w,232f,zzn'
2 print(s.find('2'))
用法

rfind:询任意数值在字符串里所在的位置  有相同的只会寻找到最后一个的位置、没有则返回-1

1 s = 'zzn,we w,232f,zzn'
2 print(s.rfind('z'))
用法

replace(oldstr, newstr, [count]) :把oldstr替换为newstr,count为替换次数。这是替换的通用形式

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'])

列表常用操作

索引

1 s = [11,22,33,44,55,'tt']
2 print(s[3])
View Code

切片

1 s = [11,22,33,44,55,'tt']
2 print(s[0:3])
View Code

追加

1 s = [11,22,33,44,55,'tt']
2 s.append('zzn')
3 print(s)
View Code

删除

1 s = [11,22,33,44,55,'tt']
2 print(s.pop(2))             #返回值是删除本身
3 print(s)
View Code

长度

1 s = [11,22,33,44,55,'tt']
2 print(len(s))  
View Code

循环

1 s = [11,22,33,44,55,'tt']
2 for i in s:
3     print(i)
View Code

包含

1 s = [11,22,33,44,55,'tt']
2 print('zz' in s)    #不在返回False   
3 print('tt' in s)     #在返回True
View Code

通过索引取的某一个元素,通过切片取多个或一个元素,自己原来是什么类型,取得元素就是什么类型

列表函数

.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))

元组常用操作

索引

1 s = (11, 22, 33, 44, 55)
2 print(s[0])
View Code

切片

1 s = (11, 22, 33, 44, 55)
2 print(s[0:])
View Code

循环

1 s = (11, 22, 33, 44, 55)
2 for i in s:
3     print(i)
View Code

包含

1 s = (11, 22, 33, 44, 55)
2 print(11 in s)       #包含返回True
3 print(6 in s)       #不包含返回False
View Code

元组函数

count

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
View Code

index

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
View Code

嵌套(元素不可修改)

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.无序
keys       获取所有的key(键)
values    获取所有的值
items     获取所有的的键值对
fromkeys     创建字典

saetdefault     不存在Key 才添加values   存在则不添加
clear     清除所有内容
get       根据key获取值,如果key不存在,可以指定一个默认值
pop     获取并在字典中移除
popitem     删除最后一个,但是字典是无序的
updata    
del     删除 指定索引的键值对
其他:
enumerate     自动生成一列,默认0开始自增1、可指定
 range     用获取指定范围内的数 range(0,100)
 
布尔值类型:
所有数据类型再带布尔值,只有0,空格 None 空 为False
 
 
 

6、集合:class ‘set’

作用一:关系运算
作用二:去除重复
集合定义:集合内的元素必须是唯一的
               集合内的元素必须是可hash的,也就是不可变类型
                集合是无序的
 
 
关系运算:
& 交集 intersection    去两者都有的元素
|   并集 union    取两者所有元素
-   差集 difference     从一个里面减去和另一个相同的部分,取自己本身……
^   对称差集 symmetric_difference         取不相同的  
 
clear     清空
difference_update   从一个里面减去和另一个相同的部分,取自己本身……   并更新
update     把另一个不同的数值合并进里面  并跟新
add     添加
discard     通过元素名删除 没有这个元素,不报错
remove     通过元素名删除 没有这个元素,报错
pop     随机删除
issubset     一个是不是另一个的子集  包含才是子集
issuperset     一个是不是另一个的超集     不包含
isdisjoint     两个没有交集 返回True 
posted @ 2017-06-10 23:12  小小学徒、  阅读(225)  评论(0编辑  收藏  举报