Python基本数据类型(数字 字符串)
前引
1 什么是数据?
x=10,10是我们要存储的数据
2 为何数据要分不同的类型
数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示
3 标准数据类型
Python3 中有六个标准的数据类型:
- Number(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
Python3 的六个标准数据类型中:
- 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)
数字类 Number
Python3 支持 int、float、bool、complex(复数). 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型
int(整型)
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
float(浮点型)
complex(复数)
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。

整数 int
在Python3里,只有一种整数类型 int,表示为长整型. 不再用 python2 中的 Long
数字主要是用于计算用的,使用方法并不是很多,就记住一种就可以
#!/usr/bin/env python #bit_length() 当十进制的数字用二进制表示时,最少使用的位数 v = 11111 abcde = v.bit_length() print(abcde)
[root@VM_0_15_centos py]# python int.py 14
内置的 type() 函数可以用来查询变量所指的对象类型:
>>> a,b,c,d = 10,2.5,True,5+6j >>> print(type(a),type(b),type(c),type(d)) <class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
还可以用 isinstance 来判断:
>>> a,b,c,d = 10,2.5,True,5+6j >>> isinstance(a,int) True >>> isinstance(b,int) False >>> isinstance(b,float) True
isinstance 和 type 的区别在于
class A:
pass
class B(A):
pass
isinstance(A(), A) # returns True
type(A()) == A # returns True
isinstance(B(), A) # returns True
type(B()) == A # returns False
区别就是:
- type()不会认为子类是一种父类类型。
- isinstance()会认为子类是一种父类类型
布尔值 bool
布尔值就两种:True,False。就是反应条件的正确与否。
真 1 True。
假 0 False。
在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。到 Python3 中,把 True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加.
浮点数 float
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是完全相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差
字符串 str
字符串用单引号 ' 或双引号 " 多行时三引号 ''' 括起来,同时可使用反斜杠 \ 转义特殊字符
索引与切片
索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推
索引值以 0 为开始值,-1 为从末尾的开始位置。

切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾前不顾后 ----左闭右开 )
拼接与复制 加号 + 是字符串的连接符, 星号 * 表示复制当前字符串,紧跟的数字为复制的次数
str = 'mingetty' print (str) # 输出字符串 print (str[0:-1]) # 输出第一个到倒数第二个的所有字符 print (str[0]) # 输出字符串第一个字符 print (str[2:5]) # 输出从第三个开始到第五个的字符 print (str[2:]) # 输出从第三个开始的后的所有字符 print (str * 2) # 输出字符串两次 print (str + "xxx") # 连接字符串
print(a[0:5:2]) #加步长
print(a[5:0:-2]) #反向加步长
>>> print(str1[0::2]) mnet >>> print(str1[-1:0:2]) >>> print(str1[-1:0:-2]) ytgi
转义字符 ( \ 或者 r' ' )
转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\ , 有时要转义的字符太多简化写法为 r'' ,表示''内部的字符串默认不转义.如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容. 另外,反斜杠(\)可以作为续行符,表示下一行是上一行的延续。
>>> print('\\\t\\') \ \ >>> print(r'\\\t\\') \\\t\\ >>> print('\\\n\\') \ \ >>> print(r'\\\n\\') \\\n\\
>>> print(''' ... wuhm ... kill ... py ... python''') wuhm kill py python
>>> print('abc\ ... abc\ ... 123') abcabc123 >>>
常用字符串处理方法

.captalize .swapcase .title .upper .lower # 大小写转换
# 大小写 captalize, swapcase, title, upper, lower >>> tty='what is Python?' >>> print(tty.capitalize()) #首字母大写 What is python? >>> print(tty.swapcase()) #大小写翻转 WHAT IS pYTHON? >>> print(tty.title()) #每个单词首字母大写 What Is Python? >>> print(tty.upper()) #全部大写 WHAT IS PYTHON? >>> print(tty.lower()) #全部小写 what is python?
# 大小写 captalize, swapcase, title >>> tty='what is Python?' >>> print(tty.capitalize()) #首字母大写 What is python? >>> print(tty.swapcase()) #大小写翻转 WHAT IS pYTHON? >>> print(tty.title()) #每个单词首字母大写 What Is Python? >>> print(tty.upper()) #全部大写 WHAT IS PYTHON? >>> print(tty.lower()) #全部小写 what is python? # 居中,center 参数-->10为总长度,空白处填充= >>> tty='12345' >>> print(tty.center(10)) >>> print(tty.center(10,"=")) ==12345=== # 字符串中某元素出现的次数 count >>> tty='mingetty' >>> print(tty.count("t")) >>> print(tty.count("t",0,5)) #可以指定切片位置 >>> print(tty.count("mi")) >>> print(tty.count("ni")) # 凑8位补全 expandtabs 把字符串中的 tab 符号('\t')转为空格 , ()默认为8. # tab默认为8个空格. 如果tab前面的字符长度不足8,则字符串加tab一共补全至8位,如果tab键前面的字符长度超过8个不足16个则补全至16位,以此类推每次补全至加8位 >>> tty='a\tb' >>> print(tty.expandtabs()) a b >>> print(tty.expandtabs(0)) ab >>> print(tty.expandtabs(1)) a b >>> print(tty.expandtabs(2)) a b >>> print(tty.expandtabs(3)) a b >>> tty='12345678\t0' >>> print(tty.expandtabs()) 0 >>> tty='123456789\t0' >>> print(tty.expandtabs()) 0 >>> tty='1234567890\t0' >>> print(tty.expandtabs()) 0 # 判断是否以...开头结尾 startswith endswith >>> t3='pythonpylife' >>> print(t3.startswith('py')) True >>> print(t3.startswith('py',6,11)) #返回的是布尔值 True >>> print(t3.endswith('fe')) True >>> print(t3.endswith('if',6,10)) False >>> print(t3.endswith('if',6,11)) True # 寻找字符串中某元素是否存在 find index >>> t3='pythonpylife' >>> print(t3.find('py')) >>> print(t3.find('py',1,10)) # 返回的是找到的元素的索引,如果找不到返回-1 >>> print(t3.find('py',7,10)) -1 >>> print(t3.index('py',1,10)) # 返回的是找到的元素的索引,找不到就报错。 >>> print(t3.index('py',7,10)) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found # split rsplit 以什么分割(正反方向),最终形成一个列表, 此列表不含这个分割的元素 >>> tty1 = 'title,Tilte,atre,'.split('t') >>> print(tty1) ['', 'i', 'le,Til', 'e,a', 're,'] >>> tty1 = 'title,Tilte,atre,'.split('t',1) >>> print(tty1) ['', 'itle,Tilte,atre,'] >>> tty1 = 'title,Tilte,atre,'.split('t',2) >>> print(tty1) ['', 'i', 'le,Tilte,atre,'] >>> tty1 = 'title,Tilte,atre,'.split('t',3) >>> print(tty1) ['', 'i', 'le,Til', 'e,atre,'] >>> tty1 = 'title,Tilte,atre,'.split('t',-1) >>> print(tty1) ['', 'i', 'le,Til', 'e,a', 're,'] >>> tty2 = 'title,Tilte,atre,'.rsplit('t') >>> print(tty2) ['', 'i', 'le,Til', 'e,a', 're,'] >>> tty2 = 'title,Tilte,atre,'.rsplit('t',1) >>> print(tty2) ['title,Tilte,a', 're,'] >>> tty2 = 'title,Tilte,atre,'.rsplit('t',2) >>> print(tty2) ['title,Til', 'e,a', 're,'] # format的三种玩法 格式化输出 >>> res='{} {} {}'.format('egon',18,'male') >>> print(res) egon 18 male >>> res='{1} {0} {1}'.format('egon',18,'male') >>> print(res) egon 18 >>> res='{name} {age} {sex}'.format(sex='male',name='egon',age=18) >>> print(res) egon 18 male # strip lstrip rstrip 移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。 注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。 >>> t1=' *=wuhm**' >>> print(t1.strip()) *=wuhm** >>> t2='*=wuhm**' >>> print(t2.strip('*')) =wuhm >>> print(t2.lstrip('*')) =wuhm** >>> print(t2.rstrip('*')) *=wuhm >>> print(t2.rstrip('=')) *=wuhm** >>> print(t2.lstrip('=')) *=wuhm** # replace 替换字符串,如果指定第三个参数 次数,则替换不超过几次 >>> py='new say :my name is new! new!' >>> print(py.replace('new','old')) old say :my name is old! old! >>> print(py.replace('new','old',1)) old say :my name is new! new! >>> print(py.replace('new','old',2)) # 2 为次数 old say :my name is old! new! # is 判断系列 >>> t1='abc123' >>> print(t1.isalnum()) #字符串由字母或数字组成 True >>> print(t1.isalpha()) #字符串只由字母组成 False >>> print(t1.isdigit()) #字符串只由数字组成 False >>> t2='abc' >>> print(t2.isalnum()) True >>> print(t2.isalpha()) True >>> print(t2.isdigit()) False >>> t3='123' >>> print(t3.isalnum()) True >>> print(t3.isalpha()) False >>> print(t3.isdigit()) True

浙公网安备 33010602011771号