python的内置数据类型非常丰富,大致可以分为五类:None、数字类型、序列类型、映射类型和集合类型。下面我将分别对他们进行介绍,做个总结以备以后查看。下面的表列出了各个类别下的具体数据类型。注:本文所讲的内容都是基于python2的,python3会有些不同。

类型分类

类型名称

描述

None

Type(None)

null对象None

数字类型

int

整数

long

长整数,任意精度(python2)

float

浮点数

complex

复数

bool

布尔值(True或False)

序列类型

str

字符串

unicode

Unicode字符串(python2)

list

列表

tuple

元组

xrange

xrang()创建的整数范围

映射类型

dic

字典

集合类型

set

可变集合

frozenset

不可变集合


1.None

None表示一个null对象,这是一个空对象,如果一个函数没有返回值,则返回null对象。None没有任何属性,在布尔表达式中表示False。



2.数字类型

除了布尔类型外,所有数字类型都是有符号的。整数的表示范围在-2147483648和2147483647之间,长整数可以表示任意长度,只受可用内存大小的限制。



1



2



3



4



5



6


#整数



i=123



i=int(123)



#长整数



l=123L



l=long(123)




浮点数是双精度类型(64bit),和c语言中double相同,数值范围-1.7*10(-308)到1.7*10(308)。



1



2


f=12.3



f=float(12.3)




复数使用一对浮点数表示,分为实部和虚部,使用real和imag访问,虚部后缀j或J。



1



2



3


c=1.0+2.3j



c=complex(1.0,2.3)



printc.real,c.imag




布尔值只有True和False两个值,分别映射为整数1和0。



1



2


b=False



b=bool(True)




2.1.数字运算

除了布尔类型外,int、long、float和complex都可以使用的运算为:加、减、乘、除、整除、幂运算和取余。下面分别举例说明。



1



2



3



4



5



6



7



8



9



10



11



12



13



14



15



16


>>>1+2# 加法



3



>>>1-2# 减法



-1



>>>2*3# 乘



6



>>>2/4# 整数除



0



>>>2/4.0# 浮点除



0.5



>>>3//2.0# 整除



1.0



>>>2%3# 取余



2



>>>3**2# 幂运算 =3^2



9




对于整数还可以进行位运算,共有6种位运算:取反(~)、左移(<<)、右移(>>)、异或(^)、按位或(|)、按位与(&)。



1



2



3



4



5



6



7



8



9



10



11



12


>>> ~1# 1取反后为-2的补码



-2



>>>8<<1# 左移



16



>>>8>>2# 右移



2



>>>1^3# 01 和 11 异或得到10,就是2



2



>>>1|3# 01 和 11 位或得到11,就是3



3



>>>1&3# 01 和 11 位与得到01,就是1



1




布尔类型可以通过布尔表达式取值,布尔比较运算符有6种:小于(<)、小于等于(<=)、大于(>)、大于等于(>=)、等于(==)、不等于(!=)。



1



2



3



4



5



6



7



8



9



10



11



12


>>>1<2



True



>>>1<=2



True



>>>1>2



False



>>>1>=2



False



>>>1==2



False



>>>1!=2



True




对于布尔类型还可以进行逻辑运算,有3种运算:逻辑非(not)、逻辑非或(or)、逻辑与(and)。



1



2



3



4



5



6


>>>notTrue



False



>>>TrueorFalse



True



>>>TrueandFalse



False




2.2.常用数字类型函数

abs():返回给定对象的绝对值。



1



2


>>>abs(-2)



2




divmod():把除法和取余运算结合起来,返回一个包含商和余数的元组。



1



2


>>>divmod(10,3)



(3,1)




pow():两个参数,幂运算。三个参数,乘方后取余。



1



2


>>>pow(2,5),pow(2,5,10)



(32,2)




round():四舍五入



1



2


>>>round(3.4),round(3.6)



(3.0,4.0)




floor():向下取整, ceil():向上取整, sqrt():开方, 需要math模块。



1



2



3


>>>frommathimportfloor,ceil,sqrt



>>> floor(3.6),ceil(3.6),sqrt(9)



(3.0,4.0,3.0)




conjugate():复数取共轭



1



2



3


>>> c=2+3j



>>> c.conjugate()



(2-3j)




3.序列类型

序列表示索引为非负数的有序对象集合,包括字符串、列表和元组。字符串是字符的序列,列表和元组是任意对象的序列。字符串和元组是不可变的,而列表可以插入、删除和替换。所有序列支持迭代。



3.1.字符串

创建一个字符串很简单,但表示字符串的方法有很多。



1



2



3



4



5


s='string'



s="string"# 和上面单引号一样



s='''string'''# 三引号之间的内容都被保留,用于多行输入



s=r"string"# 原生字符,关掉字符串中的转义。



s=u"string"# unicode字符串




字符串的方法很多,但不会改变字符串里的内容,常用的如下表所示。

方法

描述

index(sub[,start[,end]])

找到子字符串sub首次出现的位置,否则返回-1

find(sub[,start[,end]])

找到子字符串sub首次出现的位置,否则报错

startswith(prefix[,start[,end]])

检查是否以prefix开头

count(sub[,start[,end]])

计算子字符串sub出现的次数

decode([encoding[, errors]])

以encoding解码字符串,返回unicode字符串(只用于字节字符串)

encode([encoding[, errors]])

以encoding编码字符串(只用于unicode字符串)

upper()

返回大写形式

lower()

返回小写形式

split(sep[,maxsplit])

以sep为分隔符分割字符串,maxsplit为最大分割次数

join(t)

使用当前字符串为分隔符连接t中的字符串

format(*args, **kwargs)

格式化字符串

举个format的例子,{0}表示*args的第一个值,{name}表示**kwargs中name的值。



1



2


>>>"Here is {0},I'm {name}.".format("wuyuans.com", name="wuyuan")



"Here is wuyuans.com,I'm wuyuan"




3.2.列表和元组

列表的内容可变,可以包含任意对象,使用中括号表示。
元组的内容不可变,可以包含任意对象,使用圆括号表示。



1



2



3



4


l=[1,2,3,'4','5']# 列表



l=list((1,2,3,'4','5'))



t=(1,2,3,'4','5')# 元组



t=tuple("1234")




列表的方法主要用于改变里面的内容,下面列出列表常用的方法。

方法

描述

list(s)

将s转化为一个列表

s.append(x)

将新元素x加到s的尾部

s.extend(t)

将新列表t加到s的尾部

s.count(x)

计算x的出现次数

s.index(x[, start[, stop]])

搜索x元素

s.insert(i, x)

在i处添加x

s.pop([i])

弹出第i个元素,如果省略i,弹出最后一个

s.remove(x)

移除x

s.reverse(x)

反转列表

s.sort([key[, reverse]])

排序

也可以通过索引来删除列表中的元素。



1



2



3



4


>>> l=[1,2,3,4,5]



>>>dell[1]



>>> l



[1,3,4,5]




3.3.序列通用操作

所有序列都可以通过索引来访问,第一个元素的索引为0,-1为最后一个元素,-2倒数第二个,一次类推。
切片操作:指定索引范围,返回相应的子序列。
还有一些常用的,如下所示



1



2



3



4



5



6



7



8



9



10



11



12



13



14



15



16


>>> t=(1,2,3,4,5)



>>> l=[1,2,3,4,5]



>>> t[0]



1



>>> t[1:4]# 索引1~4



(2,3,4)



>>> t[1:4:2]# 索引1~4,步进为2



(2,4)



>>>len(t)# 序列长度



5



>>>max(t)# 最大值



5



>>>min(t)# 最小值



1



>>>sum(t)# 序列求和



15




3.4.xrange()对象

xrange()对象比较特殊,他表示一个整数范围,只有访问它时才会计算他的值,所以切片操作是不能用于xrange对象的。xrange对象由xrange([i, ] j [, stride])函数创建,i为起始值,stride为步进值。



1



2



3



4



5



6



7



8


>>> x=xrange(1,10,2)



>>>foriinx:



    printi



1



3



5



7



9




4.映射类型

字典(dict)是python为唯一的内置映射类型,任何不可变对象都可以用作字典的键值,如字符串、数字、元组等。字典使用大括号表示,键和值之间用冒号分割,各个键值间用逗号隔开。映射对象是无序的。



1



2



3


d=dict((['name','wuyuan'], ['age',23]))



d={'name':'wuyuan','blog':'wuyuans.com','age':23}



d['school']='HDU'# 添加一项




字典的常用方法和操作

方法和操作

描述

len(d)

返回字典d的项目数

d[k]

d中键k的值

del d[k]

删除d[k]

k in d

如果k是d的键值,返回True

d.clear()

清空d

d.copy()

返回d的一个拷贝

d.fromkeys(s[, value])

返回一个新字典,s中的所有元素作为新字典的键,值为value

d.get(k[, v])

返回d[k],没有则返回v

d.items()

返回由键值组成的序列,主要用于历遍

d.keys()

返回由键组成的序列

d.values()

返回由值组成的序列

d.pop(k[, default])

弹出d[k],没有则返回default

d.update(b)

将b中对象添加到d中

字典的历遍方式:



1



2



3



4



5



6


#使用键历遍



foriind:



    printi,d[i]



#使用键值历遍



fork,vind.items():



    printk,v




5.集合类型

集合是唯一项的无序集,集合不提供索引或切片操作,集合的长度可变,但放入里面的必须是不可变的。集合分为两种:可变集合(set)和不可变集合(frozenset)。



1



2


s=set([1,2,3])



fs=frozenset([1,2,3])




集合通用方法和操作

方法和操作

描述

len(s)

返回集合s的项目数

s.copy()

返回集合s的一份副本

s.difference(t)

求差集,返回在s中,但不在t中的项目

s.intersection(t)

求交集,返回同时在s和t中的项目

s.isdisjoint(t)

s和t中没有相同项,返回True

s.issubset(t)

s是t的子集,返回True

s.issuperset(t)

s是t的超集,返回True

s.union(t)

求并集,返回在s或t中的项目

可变集合set的方法和操作

方法和操作

描述

s.add(item)

添加item

s.clear()

清空集合s

s.difference_update(t)

在s中删除同时在s和t中的项目

s.discard(item)

删除item

s.pop()

弹出任一项

s.remove(item)

删除item,没有则引发异常

s.update(t)

将t中所有项添加到t中,t为任意支持迭代对象