Python02_数据类型与运算
1、整型 python2.XX里分整型和长整型;python3.XX里没长整型,都是int整型。python和其他语言不同,是没有指定整型的位宽的,因此整型不存在数值大小限制,但是由于机器寻址能力的关系,整型数值的大小仍然受机器本身限制。
整型数据溢出时自动扩展。
浮点占8个字节,共64位,其中52位表示底,11位表示指数,最高位1位表示符号。
2、布尔值,真或假对应1与0,True和False,注意是首字母大写
3、字符串常用功能:
-
移除空白
-
分割
-
长度
-
索引
-
切片
字符串的常用方法或函数说明
string.capitalize() 把字符串的第一个字符大写
string.center(width) 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串
string.count(str, beg=0, end=len(string)) 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
string.decode(encoding='UTF-8', errors='strict') 以 encoding 指定的编码格式解码 string,如果出错默认报一个ValueError的异常,除非 errors指定的是 'ignore'或者'replace'
string.encode(encoding='UTF-8', errors='strict') 以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'
string.endswith(obj, beg=0, end=len(string)) 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
string.expandtabs(tabsize=8) 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。
string.find(str, beg=0, end=len(string)) 检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1
string.index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在 string中会报一个异常.
string.isalnum() 如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False
string.isalpha() 如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
string.isdecimal() 如果 string 只包含十进制数字则返回 True 否则返回 False.
string.isdigit() 如果 string 只包含数字则返回 True 否则返回 False.
string.islower() 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
string.isnumeric() 如果 string 中只包含数字字符,则返回 True,否则返回 False
string.isspace() 如果 string 中只包含空格,则返回 True,否则返回 False.
string.istitle() 如果 string 是标题化的(见 title())则返回 True,否则返回 False,所有单词的首字母都是以大写开始,其余字母均为小写
string.isupper() 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
string.join(seq) 以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
string.ljust(width) 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
string.lower() 转换 string 中所有大写字符为小写.
string.lstrip() 截掉 string 左边的空格或回车,回车是\n
string.maketrans(intab, outtab]) 用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
max(str) 返回字符串 str 中最大的字母。
min(str) 返回字符串 str 中最小的字母。
string.partition(str) 有点像 find()和 split()的结合,从 str出现的第一个位置起,把字符串 string分成一个3元素的元组(str_pre,str,str_post),如果 string 中不包含str 则str_pre_str==str
string.replace(str1, str2, num=string.count(str1)) 把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.
string.rfind(str, beg=0,end=len(string) ) 类似于 find()函数,不过是查找最后一个str.
string.rindex( str, beg=0,end=len(string)) 类似于 index(),不过是从右边开始.
string.rjust(width) 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
string.rpartition(str) 类似于 partition()函数,不过是从右边开始查找.
string.rstrip() 删除 string 字符串末尾的空格或回车,回车\n
string.split(str="", num=string.count(str)) 以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串,默认按空格分隔,返回一个列表。
string.splitlines(num=string.count('\n')) 按照行分隔,返回一个包含各行作为元素的列表,如果 num 指定则仅切片 num 个行.
string.startswith(obj, beg=0,end=len(string)) 检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查.
string.strip([obj]) 在 string 上执行 lstrip()和 rstrip()
string.swapcase() 翻转 string 中的大小写
string.title() 返回"标题化"的 string,就是说所有单词的首字母都是以大写开始,其余字母均为小写(见 istitle())
string.translate(str, del="") 根据 str 给出的表(包含 256 个字符)转换 string 的字符,要过滤掉的字符放到 del 参数中
string.upper() 转换 string 中的小写字母为大写
string.zfill(width) 返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0
string.isdecimal() 检查字符串是否只包含十进制字符。这种方法只存在于unicode对象。
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
Python有6个序列的内置类型,但最常见的是列表和元组。
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型
4、列表
创建列表:
name_list = ['alex', 'seven', 'eric'] 或 name_list = list(['alex', 'seven', 'eric'])
访问列表元素使用索引,例如name_list[0],而且列表索引从0开始。
基本操作:
-
索引 可以使用索引去修改,查找元素。
-
切片 是指从列表中切取索引连续的元素,切片是索引必须从左往右数。可以跳着切片,例如name_list[::2],其中2为步长。全切片name_list[:]。切片会得到一个全新的列表。
-
追加 可以使用append()方法添加元素
-
删除 使用del去删除元素,例如del name_list[2],或者使用name_list.pop(index)方法
-
长度
-
切片
-
循环
-
包含
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,重组后的列表的元素顺序是从左到右,
* 号用于重复列表,
list=[2,4,6]
print(len(list)) #结果是3
list2= list*2 #list2为[2,4,,2,4,6]
print(type(list2)) #结果仍然是list
列表还而已嵌套,类似于二维数组
len(list) 列表元素个数
max(list) 返回列表元素最大值
min(list) 返回列表元素最小值
list(seq) 将元组转换为列表
list.append(obj) 在列表末尾添加新的对象
list.count(obj) 统计某个元素在列表中出现的次数
list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj) 从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj) 将对象插入列表
list.remove(obj) 移除列表中某个值的第一个匹配项
list.sort( key=None, reverse=False) 对原列表进行排序
list.reverse() 反向列表中元素
list.clear() 清空列表
list.copy() 复制列表,只会浅copy,即只会copy第一层,如果列表里有指针类型的,那么它的第二层并不会被copy。
浅copy的另外三种方法:
copy.copy(name_list)和name_list[:]
list(name_list)
5、元组(不可变列表),也叫只读列表
创建元组:ages = (11, 22, 33, 44, 55) 或 ages = tuple((11, 22, 33, 44, 55))
特点:一旦创建元组,就不可增,删,改,可以查找,可以分片。
只有两个方法,count()和index()方法
6、字典(无序)
字典是另一种可变容器模型,且可存储任意类型对象。键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组
创建字典:
person = {"name": "mr.wu", 'age': 18} 或 person = dict({"name": "mr.wu", 'age': 18})
常用操作:
-
索引
-
新增 新增和修改一样,person["key"]=value即可
-
删除 del person删除整个字典, del person["name"] 删除字典里的name-mr.wu,此外person.pop("key")也能删掉指定的key-value对象。
-
键、值、键值对
-
循环
-
长度
字典的特点:无序
判断key在不在字典里,直接用key in dictionary,在就返回True,否则返回false。python2.7使用dict.haskey(key)去判断,有返回True,否则返回False。
6、集合(无序)
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
集合的主要作用是去重和关系测试。
关系测试:
数据运算
算数运算:
Python2.x 里,整数除整数,只能得出整数。如果要得到小数部分,把其中一个数改成浮点数即可
比较运算:
<>不等于已经在python3.XX中取消。另外上述结果中的结果是 True和 False,而不是 true和 false。
赋值运算:
逻辑运算:
成员运算:
Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组
身份运算: 身份运算符用于比较两个对象的存储单元
id() 函数用于获取对象内存地址。
is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个(同一块内存空间), == 用于判断引用变量的值是否相等。
位运算:
#!/usr/bin/python
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0
c = a & b; # 12 = 0000 1100
print "Line 1 - Value of c is ", c
c = a | b; # 61 = 0011 1101
print "Line 2 - Value of c is ", c
c = a ^ b; # 49 = 0011 0001 #相同为0,不同为1
print "Line 3 - Value of c is ", c
c = ~a; # -61 = 1100 0011
print "Line 4 - Value of c is ", c
c = a << 2; # 240 = 1111 0000
print "Line 5 - Value of c is ", c
c = a >> 2; # 15 = 0000 1111
print "Line 6 - Value of c is ", c
*按位取反运算规则(按位取反再加1) 详解http://blog.csdn.net/wenxinwukui234/article/details/42119265
运算符优先级:
补漏知识点
bytes
bytes 是 Python 3.x 新增的类型,在 Python 2.x 中是不存在的
字符串由若干个字符组成,以字符为单位进行操作;字节串由若干个字节组成,以字节为单位进行操作。
字节串和字符串除了操作的数据单元不同之外,它们支持的所有方法都基本相同。
字节串和字符串都是不可变序列,不能随意增加和删除数据。
bytes 类型的数据非常适合在互联网上传输,可以用于网络通信编程;bytes 也可以用来存储图片、音频、视频等二进制格式的文件。
字符串和 bytes 存在着千丝万缕的联系,我们可以通过字符串来创建 bytes 对象,或者说将字符串转换成 bytes 对象。有以下三种方法可以达到这个目的:
如果字符串的内容都是 ASCII 字符,那么直接在字符串前面添加b前缀就可以转换成 bytes。 对于非 ASCII 字符,print 输出的是它的字符编码值(十六进制形式),而不是字符本身。非 ASCII 字符一般占用两个字
节以上的内存,而 bytes 是按照单个字节来处理数据的,所以不能一次处理多个字节
bytes 是一个类,调用它的构造方法,也就是 bytes(),可以将字符串按照指定的字符集转换成 bytes;如果不指定字符集,那么默认采用 UTF-8。
字符串本身有一个 encode() 方法,该方法专门用来将字符串按照指定的字符集转换成对应的字节串;如果不指定字符集,那么默认采用 UTF-8。
字节串可以调用decode()方法转换成字符串
三元运算
result = 值1 if 条件 else 值2
如果条件为真:result = 值1
如果条件为假:result = 值2
注意,上述三元运算和if条件很相似,但是语法上稍有不同,if条件后隔着冒号,而三元运算是没有冒号的。