Python主要有以下四种基本数据类型:整型,浮点型,布尔型和字符串型
Python支持的整数和浮点数运算,有以下几种
运算符说明示例结果+加法3+25-减法30-525*乘法3*618/浮点数除法8/24.0/ /整数除法7//32%模(取余)7%43**幂2**38注意,0不能作为除数
Python中除了10进制还有其他三种进制:
0b 或 0B,二进制 0 10o 或 0O,八进制 0 1 2 3 4 5 6 70x 或 0X,十六进制 0 1 2 3 4 5 6 7 8 9 a b c d e使用int()可以将其他类型的数据转换成整数
浮点数直接舍去小数部分。如,int(9.9)结果是9布尔值True转为1,False转为0。如,int(True)结果是1字符串整合整数格式 (浮点数字符串不能转)整数与浮点型混合运算时,表达式结果会自动转换成浮点型。如,2+8.0的结果是10.0
Python2中,整数int是32位,long是64位 Python3中,int可以存储任意大小的整数,long被取消。Python3 可以做超大数的计算,不会造成“整数溢出”,这也是Python适合科学运算的原因。
浮点数,称为float
运算符和赋值符=结合构成“增强型赋值运算符”
a += 1 a *= 2 #等价于 a = a+1 a = a*2Python2中没有布尔值,直接用数字0表示False,用数字1表示True。 Python3中,把True和False定义为关键字,但他们的本质还是1和0,可以和数字相加
所有比较运算符返回1表示真,返回0表示假,分别与True和False等价。
运算符描述备注==等于-比较对象的值是否相等a=1 b=1.0 a==b返回True!=不等于-比较对象的值是否不相等>大于<小于>=大于等于<=小于等于同一运算符比较两个对象的存储单元,实际比较的是对象的地址
运算符描述isis是判断两个标识符是不是引用同一个对象is notis是判断两个标识符是不是引用不同对象is 与 == 区别: is用于判断两个对象地址是否相同 == 用于比较两个对象的值是否相同
在命令行中执行时,Python对比较小的整数对象进行缓存(范围[-5,256]),因此以下代码返回False
a = 10000 b = 10000 a == b在保存成文件执行时,缓存的范围增大到[-5,任意正整数],因此以上代码返回True。
字符串的本质是字符序列。Python的字符串是不可变的,无法对原字符串做任何修改,但是可以将字符串的一部分复制到新创建的字符串,达到“看起来修改”的效果。 Python不支持单字符类型,单字符也是作为字符串处理的。
Python3直接支持Unicode,可以表示世界上任何书面语言的字符。Python3的字符默认就是16位Unicode编码,ASCII码是Unicode编码的子集 使用内置函数ord()可以把字符转换成对应的Unicode码。 使用内置函数chr()可以把十进制数字转换成对应的字符。
Python允许空字符串‘’的存在,不包含任何字符
len(字符串变量)用于计算字符串含有多少字符。
使用"+特殊字符",实现某些难以用字符表示的效果。常见的转义字符有
转义字符描述(在行尾时)续行符\\反斜杠符号\ ’单引号\”双引号\b退格\n换行\t横向制表符\r回车可以使用+将多个字符串拼接起来,字符串拼接有以下原则,
如果+两边都是字符串,则拼接如果+两边都是数字,则加法运算如果+两边类型不同,则抛出异常 可以将多个字面字符串直接放在一起拼接 a = "aa""bb" #等价于 a = "aa" "bb" #等价于 a = "aa"+"bb"可以使用input()从控制台读取键盘输入的内容
myname = input("enter your name:")str()可以将其他数据类型转换成字符串
a = str(5.20) # "5.20" b = str(3.14e2) # "314.0" c = str(True) # "True"字符串的本质就是字符序列,通过在字符串后添加[],在[]里指定偏移量,提取该位置的单个字符。 正向检索:最左侧表示第一个字符,偏移量是0,第二个偏移量是1,以此类推,直到len(str)-1为止。 反向检索:最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推,直到-len(str)为止
str.replace()会返回新的字符串,不会修改原字符串
a = "abcdefghijklmn" # 'abcdefghijklmn' a = a.replace("c","99") # 'ab99defghijklmn'切片slice操作可以让我们快速的提取子字符串,标准格式为:[起始偏移量start:终止偏移量end:步长step],包含start,不包含end
操作说明[:]操作整个字符串[start:]从start开始到字符串结尾[:end]从头开始到end-1[step:end]从start开始到end-1[step:step:end]从start开始到end-1,步长step[::-1]步长为负,从右向左反向提取[::step]步长为step提取字符串切片操作时,其实偏移量和终止偏移量不在[0,字符串长度-1]这个范围时,也不会报错。起始偏移量小于0,视作0,终止偏移量超出len-1时,视作-1
split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。如果不指定分隔符,则默认使用空白字符()
对于符合标识符规则的字符串(仅包含下划线_,字符串和数字),会启用字符串驻留机制,也就是相同的字符串会被保存在字符驻留池中,仅被保留一次。
a = "abc_123" b = "abc_123" a is b #返回True a == b #返回True a = "dd##" b = "dd##" a is b #返回False a == b #返回Truein/not in 用于判断字符或者子字符串是否只存在于字符串中
假设 a =“Life was like a box of chocolates, you never know what you’re gonna get”
方法说明示例结果len(a)字符串长度len(a)71startswith()以指定字符串开头a.startswith(“Life”)Trueendswith()以指定字符串开头a.startswith(“get”)Truefind()第一次出现该字符串的位置a.find(“you”)35rfind()最后一次出现该字符串的位置a.rfind(“you”)55count()字符串出现的次数a.count(“you”)2isalnum所有字符全是字母或数字a.isalnum()Falsestrip()去除字符串首尾指定信息,lstrip()去除字符串左边指定信息,rstrip()去除字符串右边指定信息。
a = "*choco*lates*" a.strip("*") #'choco*lates' a.lstrip("*") #'choco*lates*' a.rstrip("*") #'*choco*lates'a = “love and peace”
函数说明示例结果capitalize()产生新的字符串,首字母大写a.capitalize()‘Love and peace’title()产生新的字符串,每个单词首字母大写a.title()‘Love And Peace’upper()产生新的字符串,所有字母大写a.upper()‘LOVE AND PEACE’lower()产生新的字符串,所有字母小写a.lower()‘love and peace’swapcase()产生新的字符串,大小写转换a.swapcase()‘LOVE AND PEACE’center()、ljust()、rjust()这三个函数用于对字符串实现排版。示例如下
a = "XYZ" a.center(10,"*") # '***XYZ****' a.center(10) # ' XYZ ' a.ljust(10,"*"); #'XYZ*******'isalnum() 是否为字母或数字 isalpha() 检测字符串是否只有字母组成(含汉字) isdigit() 检测字符串是否只由数字组成 isspace() 检测是否为空白符 isupper() 是否为大写字母 islower() 是否为小写字母
'XYZ100'.isalnum() #True 'woshi中国人'.isalpha() #True '3.1415'.isdigit() #False '31415'.isdigit() #True 'XYZ'.isupper() #True ' '.isspace() #True '\t'.isspace() #True '\n'.isspace() #TruePython2.6开始, 新增了一种格式化字符串的函数str.format(),它增强了字符串格式化的功能。 基本语法是通过{}和:代替之前的%
a = "名字是{0},年龄是{1}" a.format('李雷','18') #'名字是李雷,年龄是18' a = "名字是{name},年龄是{age}" a.format(name='李雷',age=18) #'名字是李雷,年龄是18'^、<、>分别表示居中、左对齐、右对齐,后面跟着数字宽度。
a = "abc{0:*>8}defg" a.format('+++') #'abc*****+++defg'浮点数通过f,整数通过d进行格式化,常用格式如下
格式描述数字输出{:.2f}保留小数点后两位“{:.2f}” .format(3.1415926)3.14{:+.2f}带符号保留小数点后两位“{:+.2f}” .format(-3.1415926)-3.14{:.0f}不带小数“{:.0f}” .format(3.1415926)3{:0>2d}左边数字填充0,数字总长度为2"{:0>2d} " .format(3)03{:0<5d}右边数字填充0,数字总长度为5"{:0<5d} " .format(3)30000{:.2%}百分比格式,小数点后面保留2位“{:.2%}” .format(0.25)25.00%{:.2e}指数记法,小数点后面保留2位“{:.2e}” .format(200003)2.00e+05{:10d}右对齐,宽度为10 ,空格填充“{:10d}” .format(3)3{:<10d}左对齐,宽度为10 ,空格填充“{:<10d}” .format(3)3{:^10d}中间对齐,宽度为10,空格填充"{:^10d} " .format(3)3Python字符串是不可变的,不能够原地修改,可以使用io.StringIO对象或array模块修改字符串。
import io s = "hello,world" sio = io.StringIO(s) sio.getvalue() #"hello,world" sio.seek(7) sio.write('z') sio.getvalue() #'hello,wzrld'计算机中时间的表示是从“1970年1月1日 00:00:00”开始,以毫秒(1/1000秒)进行计算。我们也把1970年这个时刻成为“unix时间点”。因此,所有的时间都能够用数字表示。 Python中可以用time.time()获得当前时刻,返回的值是以秒为单位,带微秒(1/1000毫秒)精度的浮点数。比如,15301684903.8566。Python中使用time时,需要先引入time包。