细数Python中的数据类型以及他们的方法
一、数据类型的种类及主要功能
1、数字类型
数字类型主要是用来计算,它分为整数类型int和浮点类型float
2、布尔类型
布尔类型主要是用于判断,它分为真True和False两种
3、字符串类型
字符串类型是以引号引用的内容,它主要是为了方便存储以及传送一些简单的数据
4、列表类型
列表主要用来存储大量的数据内容,格式为 list = [a,b,c,d,e] 它可以存储任意数据类型
5、元组类型
元组跟列表类似,只是它的内容不能被修改,格式为(a,b,c,d,e)
6、字典类型
字典类型主要是存储键值对,可以更方便的管理以及调用数据,格式为{‘k1’:'v1', 'k2':'v2', 'k3':'v3'}
7、集合类型
集合不太常用,与字典类似,但是只有值,而没有对应的健,格式为{a,b,c,d,e}
二、数据类型的互相转换
1、数字转换成字符串
条件:无条件转换(任何数字类型均可以转换成字符串)
方法:str(int)
2、字符串转换成数字
条件:字符串必须由全数字组成
方法:int(str)
3、数字转换成布尔值
条件:无条件转换。数字为0则转换结果为False,非0则转换结果为True
方法:bool(int)
4、字符串转换成布尔值
条件:无条件转换。字符串为空则转换结果为False,非空则转换结果为True
方法:bool("adsaf") = True bool(False) = False
5、布尔值转换成数字
条件:无条件转换。True的转换结果为1,False的转换结果0
方法:int(bool)
6、字符串转换成列表
条件:无条件转换。可以用字符串的split()方法将一个字符串切分成N个字符串然后装进一个集合后返回
方法:str.split()
7、列表转换成字符串
条件:无条件转换。可以用 str.join(list) 将一个列表转换成字符串
方法:" ".join(list)
三、数据类型的主要方法(函数)
1、数字类型
数据类型只需要记住一个方法,既:bit_length方法:
它是用来计算一个数字至少要用几位二进制码来表示,
如1的二进制码为00000001,那么它的bit_length即为1
而3的二进制码为00000011,那么它的bit_length即为2
1 i = 6
2 len_i = i.bit_length()
3 print(len_i) #结果为3
2、布尔类型
布尔类型也有bit_length方法,True的结果为1,False的结果为0
1 print(True.bit_length()) #结果为1
2 print(False.bit_length()) #结果为0
3、字符串类型
字符串的索引
可以用字符串后面跟下标的方式来进行索引,而下标从0开始,至字符串的 len-1 格式为:str[index],如下:
1 s = 'fuyong'
2 print(s[0]) #结果为 F
3 print(s[3]) #结果为 o
字符串的切片
可以用字符串后面跟‘’下标:下标‘:步长’的方式来对字符串进行切片,格式为 str[index1:index2:step],如下:
1 s = 'fuyong'
2 print(s[0:4]) #结果为fuyo 0 是指从第一个开始切,而 4 代表从索引值为3 (即第四个字母)的地方结束,步长不写的话默认为1,即连续切
3 print(s[:4]) #结果为fuyo 如果第一个索引值不写,默认从最开始的地方切
4 print(s[1:]) #结果为uyong 如果第二个索引值不写,默认从第一个索引值对应的字符开始一直切到末尾
5 print(s[:]) #结果为fuyong 如果两个索引值都不写,默认从开始到末尾
6 print(s[3:-1]) #结果为 n 第二个索引值为-1的话即表示最后一个字符,也就是说切分从第五个值开始到最o后一个字符之前的一个数
7 print(s[0:4:2]) #结果为fy 最后一个2代表步长为2,即从 0-4 的之间每隔一个切一个
8 print(s[4:0:-1]) #结果为noyu 步长为-1 代表倒着数,此时第一个索引值一定要比第二个索引值大。注意:此时是取到第二个索引值对应的字符的前一位
9 print(s[4:0:-2]) #结果为ny,步长为-2,代表倒着数,每隔1个取一个进行切
字符串的方法
注意:与列表不同,对字符串操作的所有方法是生成一个新的字符串,而不是直接修改原有的字符串!!!
字符串类型的方法比较复杂也比较重要。让我们来总结一下:
capitalize() 方法:
此方法是用于将字符串的首字母转为大写,如下:
1 s = 'fuyong' 2 print(s.capitalize()) #结果为 Fuyong
title()方法:
此方法的作用是将用空格、数字以及其他符号分开的单词或者其他字符串的首字母变成大写,如下:
1 print('fu yong'.title()) #结果为 Fu Yong
2 print('fu*yong'.title()) #结果为 Fu*Yong
3 print('fu3yong'.title()) #结果为 Fu3Yong
4 print('fu%#yong'.title()) #结果为 Fu%#Yong
swapcase()方法:
此方法是用于将字符串的大小写翻转,如下:
print('fuyong'.swapcase()) #结果为FUYONG
print('FuYong'.swapcase()) #结果为fUyONG
upper() 方法和 lower()方法:
这两种方法的作用是将字符串全部转换为大写(upper)或小写(lower),>如下:
1 print('fuyong'.upper()) #结果为FUYONG
2 print('Fu Yong'.lower()) #结果为fu yong
此方法一般用于在不区分大小写的情况下验证用户输入的字符串,如:
1 name = input('请输入您的帐号:')
2 password = input('请输入您的密码')
3 if name.upper() == 'FUYONG' and password.lower() == 'fuyong123':
4 print('恭喜您,登录成功!')
# 运行之后用户输入的帐号为 ‘Fuyong’、‘fuYong’……密码输入‘fUyOnG123’ 、‘FuYoNG123’均可登录成功
startswith()和endswith()方法:
这两中方法是用来判断字符串以什么开头或者结尾,用法如下:
1 print('fuyong'.startswith('fu')) #结果为True
2 print('fuyong'.endswith('g')) #结果为True
strip() 、lstrip()、rstrip()方法:
这三种方法的作用是删除左右两边的空格或者其他符号,可以指定只删除左边的或者只删除右边的,如下:
1 s1 = ' fuyong '
2 print(s1.strip()) # 结果为‘fuyong# ’ 默认是将字符串两边的空格全部去掉
3
4 s2 = '***fuyong**'
5 print(s2.strip('*')) #结果为‘fuyong’ 可以指定删除的内容
6
7 print(s2.lstrip('*')) #结果为‘fuyong**’ 可以指定只删除左边的* 默认是删除左边 空格
8 print(s2.rstrip('*')) #结果为‘***fuyong’可以指定只删除右边的* 默认是删除右边 空格
replace()方法:
此方法是用来将字符串里的某些字符替换为新的字符,默认替换范围为整个字符串,也可以指定只替换几个。如下:
1 print('fu yong'.replace('yong','sir')) #结果为 ‘fu sir’
2 print('fu yong'.replace(' ',' xiao ')) #结果为 ‘fu xiao yong’ 参数对于空格同样适用
3 print('abacad'.replace('a','x',1)) #结果为 'xbacad' 只替换第一个
split()方法:
此方法用于将一串字符串按要求进行分割,然后将分割结果返回存进一个列表中,默认以空格分割、且范围为整个字符串,也可以指定以第几个符号分割,如下:
1 print('fu yong'.split()) #结果为['fu', 'yong']
2 print('fuyong'.split('y')) #结果为['fu', 'ong']
3 print('fu|yong'.split('|')) #结果为['fu', 'yong']
4.print('fu*yong*ok') #结果为['fu', 'yongok'
count()方法:
此方法用来统计一个指定字符或者一串字符串在一串大字符串种出现的次数,没有的话就返回0如下:
1 print('fuyong'.count('fu')) # 结果为 1
2 print('hello'.count('l')) # 结果为 2
3 print('world'.count('f')) # 结果为 0
find()方法:
此方法用来查询一个指定字符或者一串字符串在一大串字符串中出现的位置索引,没有的话返回-1
1 print('fuyong'.find('u')) #结果为 1
2 print('fuyong'.find('yon')) #结果为 2
3 print('fuyong'.find('x')) #结果为 -1
index()方法:
与find()方法类似,此方法用来查询一个指定字符或者一串字符串在一大串字符串中出现的位置索引,只是,如果搜索不到的话会报错
1 print('fuyong'.index('u')) #结果为 1
2 print('fuyong'.index('yon')) #结果为 2
3 print('fuyong'.index('x')) #这个找不到,会报错 ValueError: substring not found
format()方法:
此方法主要用于格式化输出,实例如下:
1 #第一种用法,{ } 里均为空,str.format()括号里的值跟str里{}一一对应
2 s1 = '{},欢迎您!现在是北京时间{}点,这里是{}的空间,点击查看{}的博客'
3 m1 = s1.format('yonghu',18,'fuyong','fuyong')
4 print(m1)
5
6 #第二种用法,{ }里可以写上索引值,会根据索引来索取str.format() 里的值,可以重复索取
7 s2 = '{0},欢迎您!现在是北京时间{1}点,这里是{2}的空间,点击查看{2}的博客'
8 m2 = s2.format('yonghu',18,'fuyong')
9 print(m2)
10
11 #第三种用法,{ }里写上健值,会根据健值来索取str.format()里的值,可以重复索取
12 s3 = '{user},欢迎您!现在是北京时间{time}点,这里是{name}的空间,点击查看{name}的博客'
13 m3 = s3.format(user = 'yonghu',time = 18,name = 'fuyong')
14 print(m3)
15
16 #输出结果均为: yonghu,欢迎您!现在是北京时间18点,这里是fuyong的空间,点击查看fuyong的博客
center()方法
此方法主要用来让一段字符串居中显示,并且两边可以填充内容以及指定总内容的长度,如下:
print('info'.center(30,'*'))
print('fuyong'.center(30,'-'))
print('29'.center(30,'-'))
print('end'.center(30,'*'))
输出结果为:
*************info*************
------------fuyong------------
--------------29--------------
*************end**************
isalnum()、isalpha()、isdigit()方法:
这三种方法用来判断一个字符串是否全部是字母或者数字组成、是否全部为字母组成,是否全部为数字组成
主要用来判断用户输入的东西,实例如下:
1 while True:
2 name = input('请输入您要注册的用户名(只能由字母组成):')
3 password = input('请输入您的注册密码(只能由字母和数字组成)')
4 phonenum = input('请输入您的电话号码(只能由数字组成)')
5
6 if name.isalpha() and password.isalnum() and phonenum.isdigit():
7 break
8 else:
9 print('输入的格式有误,请重新输入')
extandtabs()方法
此方法默认将一个tab键变成8个空格,如果tab前面的字符长度不足8个,则补全8个,如果tab键前面的字符长度超过8个不足16个则补全16个,以此类推每次补全8个。如下:
(基本没什么卵用)
1 user1 = 'fuyong\thenan'
2 user2 = 'lixiang\tzhejiang'
3 user3 = 'zhangsan\theilongjiang'
4
5 print(user1.expandtabs())
6 print(user2.expandtabs())
7 print(user3.expandtabs())
输出内容为:
fuyong henan
lixiang zhejiang
zhangsan heilongjiang
注意:与列表不同,对字符串操作的所有方法是生成一个新的字符串,而不是直接修改原有的字符串!!!
公共方法:
len():
计算一个字符串的长度
1 print(len('fuyong')) #结果为6 2 print(len('fuyong123')) #结果为9
jion():
用指定字符串进行拼接
1 s = 'fuyong' 2 print('*'.join(s)) # 结果:f*u*y*o*n*g 3 print(' '.join(s)) # 结果:f u y o n g 4 print('__'.join(s)) # 结果:f__u__y__o__n__g
4、列表类型
参见本人另一篇博客http://www.cnblogs.com/fu-yong/p/8066422.html
里面详细讲述了列表的常用方法及操作
5、元组类型
元组是用括号罗列一些元素,功能及方法与列表类似,只是元组里面的元素不能修改,称为“受限的列表”
然而,当元组里面的元素包括一个或者多个列表的时候,列表内的元素是可以修改的,称为‘儿子不能修改,孙子可以修改’ jiong。。。。。。
6、字典类型
参见本人另一篇博客http://www.cnblogs.com/fu-yong/p/8073912.html
里面详细讲述了字典的常用方法及操作
7、集合类型
参见本人另一篇博客http://www.cnblogs.com/fu-yong/p/8086280.html
里面详细讲述了集合的常用方法及操作