一、python数据类型介绍
python基本数据类型:数字、字符串、布尔、列表、元组、字典,可通过type(变量名)来查看变量的类型
可变和不可变数据类型:修改变量的值后,变量在内存中存放的位置是否发生变化,可通过id(变量名)查看变量指向内存中的位置
1.按可变不可变分类
可变:列表、字典
不可变:数字、字符串、元组、布尔
2.按访问顺序分类
直接访问:数字、布尔
顺序访问:字符串、列表、元组
映射方式:字典,字典的查找速度比列表快但占的内存比列表多
3.按存放元素个数分类
容器类型:列表、元组、字典
原子类型:数字、字符串、布尔
二、字符串
1.用单引号或双引号括起来,也可以单引号和双引号组合使用。
2.字符串支持与字符串的加法,即两个字符串的拼接;字符串支持与数字的乘法,表示字符串共出现次数。
3.字符串可通过下标索引的方式取子串,下标从0开始,v[m:n]表示取字符串下标为m到n-1的子串
[root@oldboy test]# cat str.py v1='abc' v2="def" v3='"ghi"' v4="'jkl'" print(v1,v2,v3,v4) print(v2+v3+v4,v1*5) print(v3[0:3]) [root@oldboy test]# python str.py abc def "ghi" 'jkl' def"ghi"'jkl' abcabcabcabcabc "gh
4.字符串在内存中一旦创建就不会被修改,如果要修改字符串的内容,则修改后的字符串存放在另外一个新的空间。
5.字符串的函数
a=’ aLex’
(1)v1=a.casefole() 将字符串变小写,能转换除字母之外的对应关系
(2)v2=a.lower()/a.upper() 将字符串变小写、大写
(3)v3=a.center(n[,’*’]) 设置宽度为n,a居中,空白处用*(限一个字符)填充
(4)v3=a.ljust(n,’str’) 左对齐填充,一共n位,不足的从右使用str进行填充
(5)v3=a.rjust(n,’str’) 右对齐填充,一共n位,不足的从左使用str进行填充
(6)v3=a.zfill(n) 右对齐填充,使用0从左填充至n位
(7)v4=a.count(‘str’,[n[,m]]) 计算在第n和m个字符之间str出现的次数 (包含n但不包含m,以下都是)
(8)v5=a.endswith(‘str’,[,n[,m]]) 判断是否以str结束
(9)v6=a.startswith(‘str’ [,n[,m]]) 判断是否以str开始
(10)v7=a.find(‘str’ [,n[,m]]),返回第一次找到str的位置,未找到返回-1
(11)v8=a.index('str'),返回第一次找到str的位置,未找到报错
(12)v9=a.lstrip()、a.rstrip()、a.strip() 去掉左边(包括\t、\n)、右边、左右两边的空格
(13)v9=a.lstrip(‘str’)、a.rstrip(str’)、a.strip(str’) 移除指定字符,优先最多匹配
(14)v10=a.partition(‘str’)、 rpartition(‘str’) 以第一个出现的str为分隔符分为三份,前面一份、str一份,余下一份---结果为元组
(15)v11=a.split(‘str’[,n])、rsplit(‘str’[,n]) 以str进行分割,分割后str不出现,n表示分割n次,无表示一直分割---结果为列表
(16)v12=a.aplitlines(true/false) 以换行符分割,true/false表示保留、去除换行符
(17)v13=a.swapcase() 将大写变小写、小写变大写
(18)len(a) 求字符长度,python2中一个汉字长度为3,python3中一个汉字长度为1
(19)v14=a.replace(‘str1’,’str2’[,n]), 将要处理字符串中的str1替换为str2,n表示替换前n个,无n全部替换
a.isalnum() 判断是否是字母(含汉字)和数字
a.isalpha() 判断是否是字母(含汉字)
a.isdecimal() 判断是否是整数数字(不能识别类似③之类的特殊表示)
a.isdigit() 判断是否是整数数字(能识别类似③之类的特殊表示)
a.isnumeric()判断是否是整数数字(能识别汉字)
a.isidentifier() 判断是否是标识符(即包含字母、数字和下划线且不以数字开头)
a.islower() 、isupper()判断是否全部小写、大写
a.ipprintable() 判断是否全部为可见字符(即不包含\t、\n等转义字符)
a.isspace() 判断是否全部为空格
a.title() 将字符串转换为标题,即每个单词的首字母大写
a.capitalize()首字母大写
a.istitle() 判断是否为标题
format
test=’I am {name},age {age}’
v=test.format(name=’alex’,age=23)
(或者test=’I am {0},age {1}’,v=test.format(’alex’,23) )
则test=’I am alex,age 23’
format_map
v=test.format_map(‘name’:’alex’,’age’:23)
test=’1234/t567890’
v=test.expandtabs(n),每n个字符进行分割,在n个之中遇到tab(/t),则用空格补全到n位,单独遇到tab则显示n个空格
join 将指定的字符与要处理的字符串的每个字符进行拼接
test=’abcdefg’
t=’#’
v=t.join(test)
三、列表
1.通过中括号[ ]括起来,用逗号分隔每个元素,元素可以是数字、字符串、布尔值、列表、元组、字典、集合
2.列表有序(体现在每次打印结果都一样),因此可通过下标索引的方式取元素,下标从0开始,li[m:n]表示取字符串下标为m到n-1(m,n>0)的子列表,如果m为负数,n省略,如li[-3:]表示取列表最后3个元素。
3.列表可增加、删除和修改元素
4.要获取列表通过函数处理后的值,需要先调用函数再获取新的值,例如定义了li,不能直接print(li.sort()),会返回None,应该是li.sort(),print(li)
5.列表的函数
例如定义列表li=[2,’hello’,’hi’,10,[8,9],False]
通过索引删除 del li[3],表示删除元素10
通过切片修改 li[1:3]=[‘HELLO’,’HI’]
通过in判断是否存在某一元素 ‘False’ in li表示真
以上取子列表中的9,方法为li[4][1]
li.append(元素) 表示在原list最后追加一个元素
li.extend(元素) 在原list最后追加一个元素,与append的区别是,append将参数元素作为整体追加,extend会将参数元素迭代追加
li.insert(位置,元素) 在指定索引位置插入元素
li.remove(元素) 删除列表中第一次出现的指定元素
li.reverse() 将列表反转
li.sort([reverse=True]) 排序,默认升序排序,元素全部为数字或者字母时可排序,python3中字母和数字都存在时无法排序
li.clear() 清空列表
v=li.copy() 浅拷贝
v=li.count(元素) 统计指定元素在列表中出现的次数
v=li.index(元素[,m[,n]]) 查找参数元素在列表出现的位置
v=li.pop([位置]) 删除指定位置的元素(默认最后一个),v获取被删除的元素
s=str(list[]),将列表转换为字符串
li=list(‘hihiugtfit’),将字符串转化为列表,会将字符串的每个字符拆作为列表的一个元素
将列表转化为字符串,如果列表都是字符串,可直接通过空字符join,既有数字又有字符串则需要循环去每个元素再强制转化和字符串相加
[root@oldboy list]# cat change.py s='1qa45x' print(s,'\n','s转换为列表:',list(s)) li=['1','q','a','45','x'] print(li,'\n','li转换为字符串:',''.join(li)) li1=[1,'q','a',45,'x'] print(li) v='' for item in li1 : v=v+str(item) print('li1转换为字符串为:',v) [root@oldboy list]# python change.py 1qa45x s转换为列表: ['1', 'q', 'a', '4', '5', 'x'] ['1', 'q', 'a', '45', 'x'] li转换为字符串: 1qa45x ['1', 'q', 'a', '45', 'x'] li1转换为字符串为: 1qa45x
对于列表,如果定义了li2=li1,那么li2与li1指向了同一块内存地址,修改li2与li1修改的是相同地址块中的内容;而如果li2=li1[:],通过切片后li2就会重新开辟一块内存地址。