Python内置类型及常见问题
python的内置数据类型非常丰富,大致可以分为五类:None、数字类型、序列类型、映射类型和集合类型。下面我将分别对他们进行介绍,做个总结以备以后查看。下面的表列出了各个类别下的具体数据类型。*注:本文所讲的内容都是基于python2的,python3会有些不同*。
1.None
None表示一个null对象,这是一个空对象,如果一个函数没有返回值,则返回null对象。None没有任何属性,在布尔表达式中表示False。2.数字类型
除了布尔类型外,所有数字类型都是有符号的。整数的表示范围在-2147483648和2147483647之间,长整数可以表示任意长度,只受可用内存大小的限制。#整数i = 123i = int(123)#长整数l = 123Ll = long(123)
浮点数是双精度类型(64bit),和c语言中double相同,数值范围-1.7*10(-308)到1.7*10(308)。
f = 12.3f = float(12.3)
复数使用一对浮点数表示,分为实部和虚部,使用real和imag访问,虚部后缀j或J。
c = 1.0 + 2.3jc = complex(1.0, 2.3)print c.real,c.imag
布尔值只有True和False两个值,分别映射为整数1和0。
b = Falseb = bool(True)
2.1.数字运算
除了布尔类型外,int、long、float和complex都可以使用的运算为:加、减、乘、除、整除、幂运算和取余。下面分别举例说明。>>> 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^29
对于整数还可以进行位运算,共有6种位运算:取反(~)、左移(<<)、右移(>>)、异或(^)、按位或(|)、按位与(&)。
>>> ~1 # 1取反后为-2的补码-2>>> 8 << 1 # 左移16>>> 8 >> 2 # 右移2>>> 1 ^ 3 # 01 和 11 异或得到10,就是22>>> 1 | 3 # 01 和 11 位或得到11,就是33>>> 1 & 3 # 01 和 11 位与得到01,就是11
布尔类型可以通过布尔表达式取值,布尔比较运算符有6种:小于(<)、小于等于(<=)、大于(>)、大于等于(>=)、等于(==)、不等于(!=)。
>>> 1 < 2True>>> 1 <= 2True>>> 1 > 2False>>> 1 >= 2False>>> 1 == 2False>>> 1 != 2True
对于布尔类型还可以进行逻辑运算,有3种运算:逻辑非(not)、逻辑非或(or)、逻辑与(and)。
>>> not TrueFalse>>> True or FalseTrue>>> True and FalseFalse
2.2.常用数字类型函数
abs():返回给定对象的绝对值。>>> abs(-2)2
divmod():把除法和取余运算结合起来,返回一个包含商和余数的元组。
>>> divmod(10, 3)(3, 1)
pow():两个参数,幂运算。三个参数,乘方后取余。
>>> pow(2, 5),pow(2, 5, 10)(32, 2)
round():四舍五入
>>> round(3.4),round(3.6)(3.0, 4.0)
floor():向下取整, ceil():向上取整, sqrt():开方, 需要math模块。
>>> from math import floor,ceil,sqrt>>> floor(3.6),ceil(3.6),sqrt(9)(3.0, 4.0, 3.0)
conjugate():复数取共轭
>>> c = 2 + 3j>>> c.conjugate()(2-3j)
3.序列类型
序列表示索引为非负数的有序对象集合,包括字符串、列表和元组。字符串是字符的序列,列表和元组是任意对象的序列。字符串和元组是不可变的,而列表可以插入、删除和替换。所有序列支持迭代。3.1.字符串
创建一个字符串很简单,但表示字符串的方法有很多。s = 'string's = "string" # 和上面单引号一样s = '''string''' # 三引号之间的内容都被保留,用于多行输入s = r"string" # 原生字符,关掉字符串中的转义。s = u"string" # unicode字符串
字符串的方法很多,但不会改变字符串里的内容,常用的如下表所示。
举个format的例子,{0}表示*args的第一个值,{name}表示kwargs中name的值。>>> "Here is {0},I'm {name}.".format("wuyuans.com", name="wuyuan")"Here is wuyuans.com,I'm wuyuan"
3.2.列表和元组
列表的内容可变,可以包含任意对象,使用中括号表示。元组的内容不可变,可以包含任意对象,使用圆括号表示。
l = [1, 2, 3, '4', '5'] # 列表l = list((1, 2, 3, '4', '5'))t = (1, 2, 3, '4', '5') # 元组t = tuple("1234")
列表的方法主要用于改变里面的内容,下面列出列表常用的方法。
也可以通过索引来删除列表中的元素。>>> l = [1, 2, 3, 4, 5]>>> del l[1]>>> l[1, 3, 4, 5]
3.3.序列通用操作
所有序列都可以通过索引来访问,第一个元素的索引为0,-1为最后一个元素,-2倒数第二个,一次类推。切片操作:指定索引范围,返回相应的子序列。
还有一些常用的,如下所示
>>> 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为步进值。>>> x = xrange(1,10,2)>>> for i in x: print i 13579
4.映射类型
字典(dict)是python为唯一的内置映射类型,任何不可变对象都可以用作字典的键值,如字符串、数字、元组等。字典使用大括号表示,键和值之间用冒号分割,各个键值间用逗号隔开。映射对象是无序的。d = dict((['name', 'wuyuan'], ['age', 23]))d = {'name': 'wuyuan', 'blog': 'wuyuans.com', 'age': 23}d['school'] = 'HDU' # 添加一项
字典的常用方法和操作
字典的历遍方式:#使用键历遍for i in d: print i,d[i]#使用键值历遍for k,v in d.items(): print k,v
5.集合类型
集合是唯一项的无序集,集合不提供索引或切片操作,集合的长度可变,但放入里面的必须是不可变的。集合分为两种:可变集合(set)和不可变集合(frozenset)。s = set([1, 2, 3])fs = frozenset([1, 2, 3])
集合通用方法和操作
可变集合set的方法和操作python内置类型常见问题
python基本内置数据类型有哪些?
一些基本数据类型,比如:整型(数字)、字符串、元组、列表、字典和布尔类型。随着学习进度的加深,大家还会接触到更多更有趣的数据类型,python初学者入门时先了解这几种类型就可以了。
基本内置数据类型对应符号?
1)整型——int——数字
python有5种数字类型,最常见的就是整型int。例如:1234、-1234
2)布尔型——bool——用符号==表示
布尔型是一种比较特殊的python数字类型,它只有True和False两种值,它主要用来比较和判断,所得结果叫做布尔值。例如:3==3 给出True,3==5给出False
3)字符串——str——用' '或" "表示
例如:'www.phpcnpython.com'或者"hello"
4)列表——list——用[ ]符号表示
例如:[1,2,3,4]
5)元组——tuple——用( )符号表示
例如:('d',300)
6)字典——dict——用{ }符号表示
例如:{'name':'coco','country':'china'}
Python基本数据类型中哪些可变,哪些是不可变?
python可变数据类型:列表list[ ]、字典dict{ }
python不可变数据类型:整型int、字符串str' '、元组tuple()