python之数据类型

时间:2022-09-11 23:19:45
1、数字

int(整型)

  在32位系统上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
  在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
 
long(长整型)

  Python的长整数没有指定位宽,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
  自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
        python之数据类型

        该图里面使用的是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) 
       结果
        python之数据类型

 

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)