Python笔记·第四章—— 细数Python中的数据类型以及他们的方法

时间:2023-02-22 21:26:01

一、数据类型的种类及主要功能

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():

  计算一个字符串的长度

 print(len('fuyong'))         #结果为6
print(len('fuyong123'))    #结果为9

jion():

  用指定字符串进行拼接

 s = 'fuyong'
print('*'.join(s)) # 结果:f*u*y*o*n*g
print(' '.join(s)) # 结果:f u y o n g
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

   里面详细讲述了集合的常用方法及操作

Python笔记·第四章—— 细数Python中的数据类型以及他们的方法的更多相关文章

  1. [Python笔记][第四章Python正则表达式]

    2016/1/28学习内容 第四章 Python字符串与正则表达式之正则表达式 正则表达式是字符串处理的有力工具和技术,正则表达式使用预定义的特定模式去匹配一类具有共同特征的字符串,主要用于字符串处理 ...

  2. 进击的Python【第四章】:Python的高级应用(一)

    Python的高级应用(一) 本章内容: 内置函数 生成器 迭代器 装饰器 JSON和PICKLE的简单用法 软件目录结构规范 一.内置函数 1.数学运算类 abs(x) 求绝对值1.参数可以是整型, ...

  3. Python自学:第四章 在for循环中执行更多操作(2)

    # -*- coding: GBK -*- magicians = ['alice', 'david', 'carolina'] for magician in magicians: print(ma ...

  4. Python自学:第四章 在for循环中执行更多操作(1)

    # -*- coding: GBK -*- magicians = ['alice', 'david', 'carolina'] for magician in magicians: print(ma ...

  5. Android群英传笔记——第四章:ListView使用技巧

    Android群英传笔记--第四章:ListView使用技巧 最近也是比较迷茫,但是有一点点还是要坚持的,就是学习了,最近离职了,今天也是继续温习第四章ListView,也拖了其实也挺久的了,list ...

  6. 《Linux内核设计与实现》第八周读书笔记——第四章 进程调度

    <Linux内核设计与实现>第八周读书笔记——第四章 进程调度 第4章 进程调度35 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配 ...

  7. 《Linux内核设计与实现》 第八周读书笔记 第四章 进程调度

    20135307 张嘉琪 第八周读书笔记 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有 ...

  8. 《Linux内核分析》读书笔记(四章)

    <Linux内核分析>读书笔记(四章) 标签(空格分隔): 20135328陈都 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行 ...

  9. 4 Visual Effects 视觉效果 读书笔记 第四章

    4   Visual Effects    视觉效果        读书笔记 第四章 Well, circles and ovals are good, but how about drawing r ...

随机推荐

  1. for循环后面跟分号 - for &lpar;i &equals; 0&semi; i &lt&semi;&equals; 3&semi; i&plus;&plus;&rpar;&semi;这不是错误语句

    #include<iostream> int main() { using namespace std; ; ; i <= ; i++); t = t + i; cout <& ...

  2. poj2391 Ombrophobic Bovines 题解

    http://poj.org/problem?id=2391 floyd+网络流+二分 题意:有一个有向图,里面每个点有ai头牛,快下雨了牛要躲进雨棚里,每个点有bi个雨棚,每个雨棚只能躲1头牛.牛可 ...

  3. java多线程之从任务中获取返回值

    package wzh.test; import java.util.ArrayList; import java.util.concurrent.Callable; import java.util ...

  4. Less tips&colon;声明变量之前可以引用变量!

    Less中的variable可以在使用之后才被声明,这一特性对于希望覆盖前期声明的(比如bootstrap等第三方library的variable)变量,从而优雅地 使用你希望的效果提供了便利. 比如 ...

  5. Activiti 使用自己的身份认证服务

    Activiti 中内置了用户和组管理的服务,由identityService 提供调用接口,默认在spring配置中如下: <bean id="identityService&quo ...

  6. CodeSmith批量生成实体

    保存以下文件为ModelBatch.cst <%@ Register Name="Model" Template="D:\Q\web\LHWYVISIT\trunk ...

  7. Codeforces758C

    C. Unfair Poll time limit per test:1 second memory limit per test:256 megabytes input:standard input ...

  8. 由于IPv6导致的iOS应用发布失败,是否该怪Azure?

    IPv6已经被越来越广泛的支持了,尤其是苹果强制要求iOS (确切的说是iOS 9以及后续版本)应用必须支持IPv6之后(官方宣布),更将进一步推动IPv6的使用. 不过苹果应用作为客户端强制要求IP ...

  9. Linux Mint(ubuntu)如何汉化firefox浏览器?

    自从火狐浏览器改用新的Quantum新核心后,原来的一些插件.性能,还有一部分设置方法都与原来相比有所改变,比如汉化问题,以前的做法是这样的: sudo apt-get install firefox ...

  10. Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框

    Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框 Jquery EasyUI Combotree单选框,Jquery EasyUI Combotree只能选择叶子节点 ...