1、数字
int(整型)
在32位系统上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(长整型)
Python的长整数没有指定位宽,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
该图里面使用的是python2.7版本,type(2**16)、type(2**25)都是int整型,但是type(2**32)就自动变为了long长整型
float(浮点型)
浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
1 print(type(0.000523)) 2 print(5.23E-4) 3 print(5.23*10**-4)
结果
complex(复数)
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。使用较少
注:Python中存在小数字池:-5 ~ 257
2、布尔值
真或假、
1 或 0
1 a = 0 2 if a : 3 print("true") 4 else: 5 print("flase")
当a等于0时返回flase,等于1时返回true
3、字符串
string
python中文本总是用unicode进行编码,以str类型表示;
字符串拼接:+
Hello+Python Hello+Python
1 a = "Hello" 2 b = "Python" 3 print(a+b) 4 #输出HelloPython
字符串截取:[:]
1 a = "Hello" 2 b = "Python" 3 print(a[0:3],a[1:3]) 4 #输出Hel,el
成员判断:in
1 a = "Hello" 2 b = "Python" 3 if ("H" in a): 4 print("H 在变量 a 中") 5 else: 6 print("H 不在变量 a 中") 7 8 if ("M" not in a): 9 print("M 不在变量 a 中") 10 else: 11 print("M 在变量 a 中") 12 13 #输出H 在变量 a 中,M 不在变量 a 中
格式化字符串输出:%
符 号 | 描述 |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %f 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
格式化操作符辅助指令:
符号 | 功能 |
---|---|
* | 定义宽度或者小数点精度 |
- | 用做左对齐 |
+ | 在正数前面显示加号( + ) |
<sp> | 在正数前面显示空格 |
# | 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X') |
0 | 显示的数字前面填充'0'而不是默认的空格 |
% | '%%'输出一个单一的'%' |
(var) | 映射变量(字典参数) |
m.n. | m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
4、bytes类型
二进制类型
python2中string和二进制类型是相同的,python3中将文本(text)和二进制数据做了更清晰的区分。
文本总是用unicode进行编码,以str类型表示;而二进制数据以bytes类型表示。
在python3中,不能以任何隐式方式将str和bytes类型二者混合使用。不可以将str和bytes类型进行拼接,不能在str中搜索bytes数据(反之亦然),也不能将str作为参数传入需要bytes类型参数 的函数(反之亦然)。
strings可以被编码(encode)成字bytes,bytes也可以解码(decode)成strings:
1 >>> '€20'.encode('utf-8') 2 b'\xe2\x82\xac20' 3 >>> b'\xe2\x82\xac20'.decode('utf-8') 4 '€20'
5、列表
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
列表的数据项不需要具有相同的类型,创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。
1 list = ['Google', 'Runoob', 1997, 2000] 2 print("列表的长度为 : ",len([1, 2, 3])) 3 print("第三个元素为 : ", list[2]) 4 print("从第三个元素到第四个元素为 : ", list[2:]) 5 print("查找元素 : ", list.index("Google")) #元素不存在报错 6 print("Google元素个数 : ", list.count("Google")) # 7 list.reverse()#倒序 8 print("倒序后的列表 : ",list) 9 #list.sort()排序 10 list_copy = list.copy()#复制,只完全复制第一层,复制第二层地址,如果完全复制需要使用copy库中的deepcopy 11 print("复制后的列表 : ",list_copy) 12 list.extend(list_copy)# 13 print("列表合并 : ",list) # 14 list[2] = 2001 15 print("更新后的第三个元素为 : ", list[2]) 16 list.append("Baidu") 17 print("追加后的列表为 : ", list) 18 list.insert(2,"Alibaba") 19 print("插入相应位置的列表为 : ", list) 20 del list[2] 21 #list.remove("Alibaba") 如果元素不存在报错 22 #list.pop(2) 默认删除最后一个元素 23 print ("删除第三个元素 : ", list) 24 25 #输出结果 26 # 列表的长度为 : 3 27 # 第三个元素为 : 1997 28 # 从第三个元素到第四个元素为 : [1997, 2000] 29 # 查找元素 : 0 30 # Google元素个数 : 1 31 # 倒序后的列表 : [2000, 1997, 'Runoob', 'Google'] 32 # 复制后的列表 : [2000, 1997, 'Runoob', 'Google'] 33 # 列表合并 : [2000, 1997, 'Runoob', 'Google', 2000, 1997, 'Runoob', 'Google'] 34 # 更新后的第三个元素为 : 2001 35 # 追加后的列表为 : [2000, 1997, 2001, 'Google', 2000, 1997, 'Runoob', 'Google', 'Baidu'] 36 # 插入相应位置的列表为 : [2000, 1997, 'Alibaba', 2001, 'Google', 2000, 1997, 'Runoob', 'Google', 'Baidu'] 37 # 删除第三个元素 : [2000, 1997, 2001, 'Google', 2000, 1997, 'Runoob', 'Google', 'Baidu']
注:切片顾头不顾尾
1 list = ['Google','Runoob',1997,2000,2001,2002,2003] 2 3 for i in list: 4 print(i) 5 6 for i in list[::2]: 7 print(i)
6、元组(不可变列表)
跟列表结构基本一致,唯一不同处就是创建后不能更改
7、字典(无序)
字典是一种key-value键值对的数据类型
字典的特性:
- dict是无序的
- key必须是唯一的
字典用法
1 dict = { 2 "001":"value1", 3 "002":"value2", 4 "003":"value3", 5 } 6 print(dict) 7 #增 8 dict["004"]="value4" 9 print(dict) 10 #删法1 11 del dict["004"] 12 print(dict) 13 #删法2 14 dict.pop("003") 15 print(dict) 16 #改 17 dict["001"]="value0" 18 print(dict) 19 #查 20 print(dict.get("001")) 21 #是否存在 22 print("001" in dict) #dict.has_key("001")
多级字典嵌套及操作
1 menu = { 2 '北京':{ 3 '海淀':{ 4 '五道口':{ 5 'soho':{}, 6 '网易':{}, 7 'google':{} 8 }, 9 '中关村':{ 10 '爱奇艺':{}, 11 '汽车之家':{}, 12 'youku':{}, 13 }, 14 '上地':{ 15 '百度':{}, 16 }, 17 }, 18 '昌平':{ 19 '沙河':{ 20 '老男孩':{}, 21 '北航':{}, 22 }, 23 '天通苑':{}, 24 '回龙观':{}, 25 }, 26 '朝阳':{}, 27 '东城':{}, 28 }, 29 '上海':{ 30 '闵行':{ 31 "人民广场":{ 32 '炸鸡店':{} 33 } 34 }, 35 '闸北':{ 36 '火车战':{ 37 '携程':{} 38 } 39 }, 40 '浦东':{}, 41 }, 42 '山东':{}, 43 } 44 menu1 = { 45 '陕西':{} 46 } 47 48 #取山东,取到返回,取不到创建新值 49 menu.setdefault("山东",{}) 50 #取山东,取到返回,取不到创建新值 51 menu["山东"]="济南" 52 #合并字典,有交叉更新,否则覆盖 53 menu.update(menu1) 54 #吧字典转为列表 55 print(menu.items()) 56 #初始化新字典 57 c = dict.fromkeys([6,7,8],"test") 58 print(c) 59 print(menu)
字典循环
1 menu = { 2 '北京':{ 3 '海淀':{ 4 '五道口':{ 5 'soho':{}, 6 '网易':{}, 7 'google':{} 8 }, 9 '中关村':{ 10 '爱奇艺':{}, 11 '汽车之家':{}, 12 'youku':{}, 13 }, 14 '上地':{ 15 '百度':{}, 16 }, 17 }, 18 '昌平':{ 19 '沙河':{ 20 '老男孩':{}, 21 '北航':{}, 22 }, 23 '天通苑':{}, 24 '回龙观':{}, 25 }, 26 '朝阳':{}, 27 '东城':{}, 28 }, 29 '上海':{ 30 '闵行':{ 31 "人民广场":{ 32 '炸鸡店':{} 33 } 34 }, 35 '闸北':{ 36 '火车战':{ 37 '携程':{} 38 } 39 }, 40 '浦东':{}, 41 }, 42 '山东':{}, 43 } 44 menu1 = { 45 '陕西':{} 46 } 47 48 for i in menu: 49 print(i) 50 for k,v in menu.items(): 51 print(k,v)