【Python】python 3.x 数据类型 吐血汇总


计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在Python中,能够直接处理的数据类型有以下几种

1、整数型

Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。

计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。

2、浮点数

浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。

整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。

3、字符串

字符串是以’‘或""括起来的任意文本,比如’abc’,“xyz"等等。请注意,’'或”"本身只是一种表示方式,不是字符串的一部分,因此,字符串’abc’只有a,b,c这3个字符。

4、布尔值

布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来。
布尔值可以用and、or和not运算。
and运算是与运算,只有所有都为 True,and运算结果才是 True。
or运算是或运算,只要其中有一个为 True,or 运算结果就是 True。
not运算是非运算,它是一个单目运算符,把 True 变成 False,False 变成 True。

5、空值

空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
此外,Python还提供了列表、字典等多种数据类型,还允许创建自定义数据类型,我们后面会继续讲到

#encoding=utf-8
# 计算十进制整数 45678 和十六进制整数 0x12fd2 之和。
m = 45678+int(0x12fd2)
print(m)
# 请用字符串表示出Learn Python in imooc。
n = "Learn Python in imooc"
# 计算以下表达式的布尔值
print(100 < 99)
print(int(0xff)==255)
6、变量

在Python中,变量的概念基本上和初中代数的方程变量是一致的。
例如,对于方程式 y=x*x ,x就是变量。当x=2时,计算结果是4,当x=5时,计算结果是25。
只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。
在Python程序中,变量是用一个变量名表示,变量名必须是大小写英文、数字和下划线(_)的组合,且不能用数字开头。
在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。
静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下(// 表示注释)

等差数列可以定义为每一项与它的前一项的差等于一个常数,可以用变量 x1 表示等差数列的第一项,用 d 表示公差,请计算数列
1 4 7 10 13 16 19 ...100 项的和。

x1 = 1
d = 3
n = 100
x100 = x1+d*99
s = (2*x1+d*99)*50
print s
7、定义字符串

字符串可以用’‘或者"“括起来表示。
如果字符串本身包含 ’ 怎么办?比如我们要表示字符串 I’m OK ,这时,可以用” “括起来表示,类似的,如果字符串包含”,我们就可以用’ '括起来表示。
这个时候,就需要对字符串的某些特殊字符进行“转义”,Python字符串用 \ 进行转义。

s = "Python was started in 1989 by \"Guido\"."
print s
s = "Python is free and easy to learn."
print s
(1)raw字符串 、多行字符串

如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀 r ,表示这是一个 raw 字符串,里面的字符就不需要转义了。

r'\(~_~)/ \(~_~)/'

但是r’…‘表示法不能表示多行字符串,也不能表示包含 ’ 和 " 的字符串。
如果要表示多行字符串,可以用’’’…’’'表示.
还可以在多行字符串前面添加 r ,把这个多行字符串也变成一个raw字符串:

r'''Python is created by "Guido".
It is free and easy to learn.
Let's start learn Python in imooc!'''
请把下面的字符串用r'''...'''的形式改写,并用print打印出来:
'\"To be, or not to be\": that is the question.\nWhether it\'s nobler in the mind to suffer.'

print (r'''"To be, or not to be": that is the question.
Whether it's nobler in the mind to suffer.''')
(2)Unicode字符串

因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A 的编码是65,小写字母 z 的编码是122。
如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。
类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。
因为Python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码,普通的字符串’ABC’在Python内部都是ASCII编码的。

用多行Unicode字符串表示下面的唐诗并打印:

静夜思

床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。

print (u'''静夜思

床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。 ''')
8、集合 list

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
Python有6个序列的内置类型,但最常见的是列表和元组。
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可
list是数学意义上的有序集合,也就是说,list中的元素是按照顺序排列的。
构造list非常简单,按照上面的代码,直接用 [ ] 把list的所有元素都括起来,就是一个list对象。通常,我们会把list赋值给一个变量,这样,就可以通过变量来引用list。由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型。

假设班里有3名同学:Adam,Lisa和Bart,他们的成绩分别是 95.58559,请按照 名字, 分数, 名字, 分数... 的顺序按照分数从高到低用一个list表示,然后打印出来。
L = [{"Adam":95.5},{"Lisa":85},{"Bart":59}]
print(L)
(1)访问列表中的值
#!/usr/bin/python3
 
list1 = ['Google', 'Runoob', 1997, 2000];
list2 = [1, 2, 3, 4, 5, 6, 7 ];
 
print ("list1[0]: ", list1[0])
print ("list2[1:5]: ", list2[1:5])
(2)更新列表

可以对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项

#!/usr/bin/python3
list = ['Google', 'Runoob', 1997, 2000]
print ("第三个元素为 : ", list[2])
list[2] = 2001
print ("更新后的第三个元素为 : ", list[2])
(3)删除列表元素
#encoding=utf-8
L = [{"Adam":95.5},{"Lisa":85},{"Bart":59}]
print(L)
del L[2]
print(L)
(4)Python列表脚本操作符

列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。

Python 表达式结果 描述
len([1, 2, 3])3长度
[1, 2, 3] + [4, 5, 6][1, 2, 3, 4, 5, 6]组合
['Hi!'] * 4['Hi!', 'Hi!', 'Hi!', 'Hi!']重复
3 in [1, 2, 3]True元素是否存在于列表中
for x in [1, 2, 3]: print(x, end=" ")1 2 3迭代
##### (5)Python列表截取与拼接 Python的列表截取与字符串操作类型
Python 表达式结果 描述
L[2]'Taobao'读取第三个元素
L[-2]'Runoob'从右侧开始读取倒数第二个元素: count from the right
L[1:]['Runoob', 'Taobao']输出从第二个元素开始后的所有元素
#encoding=utf-8
l = ['Google', 'Runoob', 'Taobao']
print(l[2])
print(l[-2])
print(l[0:1])
print(l[1:])

Taobao
Runoob
['Google']
['Runoob', 'Taobao']
[Finished in 0.1s]
(6)嵌套列表

使用嵌套列表即在列表里创建其它列表

l = ['Google', 'Runoob', 'Taobao']
m = [1,2,l]
print(m)
[1, 2, ['Google', 'Runoob', 'Taobao']]
(7)列表函数&方法
序号函数
1len(list)
列表元素个数
2max(list)
返回列表元素最大值
3min(list)
返回列表元素最小值
4list(seq)
将元组转换为列表
序号方法
1list.append(obj)
在列表末尾添加新的对象
2list.count(obj)
统计某个元素在列表中出现的次数
3list.extend(seq)
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4list.index(obj)
从列表中找出某个值第一个匹配项的索引位置
5list.insert(index, obj)
将对象插入列表
6list.pop([index=-1])
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7list.remove(obj)
移除列表中某个值的第一个匹配项
8list.reverse()
反向列表中元素
9 list.sort( key=None, reverse=False)
对原列表进行排序
10list.clear()
清空列表
11list.copy()
复制列表
假设新来一名学生Paul,Paul 同学的成绩比Bart好,但是比Lisa差,他应该排到第三名的位置,请用代码实现。
L = ['Adam', 'Lisa', 'Bart']
L.insert(2,'Paul')
print L
9、元组 tuple

Python 的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:

#encoding=utf-8
tup = ('a','b')
tup1 = ('a')
tup2 = ('a',)
print(type(tup))
print(type(tup1))
print(type(tup2))

<class 'tuple'>
<class 'str'>
<class 'tuple'>
(1)访问元组

元组可以使用下标索引来访问元组中的值:

#encoding=utf-8
tup = (('a','b',1),('t','23',12))
print(tup[0])
print(tup[1][2])
(2)修改元组

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合

tup1 = (12, 34.56);
tup2 = ('abc', 'xyz')
 
# 以下修改元组元素操作是非法的。
# tup1[0] = 100
 
# 创建一个新的元组
tup3 = tup1 + tup2;
print (tup3)
(3)删除元组

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组

tup = ('Google', 'Runoob', 1997, 2000)
 
print (tup)
del tup;
print ("删除后的元组 tup : ")
print (tup)
(4)元组运算符

与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组

Python 表达式结果 描述
len((1, 2, 3))3计算元素个数
(1, 2, 3) + (4, 5, 6)(1, 2, 3, 4, 5, 6)连接
('Hi!',) * 4 ('Hi!', 'Hi!', 'Hi!', 'Hi!')复制
3 in (1, 2, 3)True元素是否存在
for x in (1, 2, 3): print (x,)1 2 3迭代
(5)元组索引,截取

因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素。

Python 表达式结果 描述
L[2]'Runoob'读取第三个元素
L[-2]'Taobao'反向读取;读取倒数第二个元素
L[1:]('Taobao', 'Runoob')截取元素,从第二个开始后的所有元素。
(6)元组内置函数
序号方法及描述实例
1len(tuple)
计算元组元素个数。
>>> tuple1 = ('Google', 'Runoob', 'Taobao')
>>> len(tuple1)
3
>>> 
2max(tuple)
返回元组中元素最大值。
>>> tuple2 = ('5', '4', '8')
>>> max(tuple2)
'8'
>>> 
3min(tuple)
返回元组中元素最小值。
>>> tuple2 = ('5', '4', '8')
>>> min(tuple2)
'4'
>>> 
4tuple(seq)
将列表转换为元组。
>>> list1= ['Google', 'Taobao', 'Runoob', 'Baidu']
>>> tuple1=tuple(list1)
>>> tuple1
('Google', 'Taobao', 'Runoob', 'Baidu')
10、字典

字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中。
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
(1)访问字典里的值
#encoding=utf-8
dict = {'name':'黄某人','age':23}
print(dict['name'])
print(dict['age'])
(2)修改字典

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对

dict = {'name':'黄某人','age':23}
dict['age']=24
print(dict['age'])
(3) 删除字典元素

能删单一的元素也能清空字典,清空只需一项操作。
显示删除一个字典用del命令

#encoding=utf-8
dict = {'name':'黄某人','age':23,'Class':'first'}
del dict['name'] # 删除键 'Name'
dict.clear()     # 清空字典
del dict         # 删除字典
(4)字典键的特性

字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:

  • 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住.
  • 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
(5)字典内置函数&方法
序号函数及描述实例
1len(dict)
计算字典元素个数,即键的总数。
>>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>> len(dict)
3
2str(dict)
输出字典,以可打印的字符串表示。
>>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>> str(dict)
"{'Name': 'Runoob', 'Class': 'First', 'Age': 7}"
3type(variable)
返回输入的变量类型,如果变量是字典就返回字典类型。
>>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>> type(dict)
<class 'dict'>
序号函数及描述
1radiansdict.clear()
删除字典内所有元素
2radiansdict.copy()
返回一个字典的浅复制
3radiansdict.fromkeys()
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4radiansdict.get(key, default=None)
返回指定键的值,如果值不在字典中返回default值
5key in dict
如果键在字典dict里返回true,否则返回false
6radiansdict.items()
以列表返回可遍历的(键, 值) 元组数组
7radiansdict.keys()
返回一个迭代器,可以使用 list() 来转换为列表
8radiansdict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9radiansdict.update(dict2)
把字典dict2的键/值对更新到dict里
10radiansdict.values()
返回一个迭代器,可以使用 list() 来转换为列表
11pop(key[,default])
删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
12 popitem()
随机返回并删除字典中的最后一对键和值。
11、集合

集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

(1)添加元素
#encoding=utf-8
m = set(("Google", "Runoob", "Taobao"))
n = {"Google", "Runoob", "Taobao"}
m.add("Facebook")
n.add("Facebook")
print(m)
print(n)
(2)删除元素

将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。

#encoding=utf-8
m = set(("Google", "Runoob", "Taobao"))
n = {"Google", "Runoob", "Taobao"}
n.remove("Google")
m.remove("Google")
print(m)
print(n)

此外还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误。

#encoding=utf-8
m = set(("Google", "Runoob", "Taobao"))
n = {"Google", "Runoob", "Taobao"}
n.discard("Google")
m.discard("Google")
print(m)
print(n)

也可以设置随机删除集合中的一个元素

#encoding=utf-8
m = set(("Google", "Runoob", "Taobao"))
n = {"Google", "Runoob", "Taobao"}
n.pop()
m.pop()
print(m)
print(n)
(3)计算集合元素个数

计算集合 s 元素个数。

#encoding=utf-8
m = set(("Google", "Runoob", "Taobao"))
n = {"Google", "Runoob", "Taobao"}
print(len(m))
print(len(n))
(4)清空集合
m = set(("Google", "Runoob", "Taobao"))
n = {"Google", "Runoob", "Taobao"}
m.clear()
n.clear()
print(m)
print(len(n))
(5)判断元素是否在集合中存在

判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。

m = set(("Google", "Runoob", "Taobao"))
n = {"Google", "Runoob", "Taobao"}
print("Google" in m)
print("faceBook" in n)
(6)集合内置方法完整列表
方法描述
add()为集合添加元素
clear()移除集合中的所有元素
copy()拷贝一个集合
difference()返回多个集合的差集
difference_update()移除集合中的元素,该元素在指定的集合也存在。
discard()删除集合中指定的元素
intersection()返回集合的交集
intersection_update() 返回集合的交集。
isdisjoint()判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
issubset()判断指定集合是否为该方法参数集合的子集。
issuperset()判断该方法的参数集合是否为指定集合的子集
pop()随机移除元素
remove()移除指定元素
symmetric_difference()返回两个集合中不重复的元素集合。
symmetric_difference_update() 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
union()返回两个集合的并集
update()给集合添加元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值