在Python3中有六个标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典),
不可变数据(3个)--->Number(数字)、String(字符串)、Tuple(元组);
可变数据(3个)--->List(列表)、Set(集合)、Dictionary(字典)
Number(数字)------整数(int)
Python可以处理任意大小的整数(没有大小限制),当然也包括负整数,在程序中的表示方法与数学上的写法一模一样,例如0,1,1000,-2000等等。除十进制以外,还有二进制,十六进制,其中二进制用0b作为前缀,十六进制用0x前缀和0-9,a-f表示。
Number(数字)------浮点数(float)
浮点数就是小数(没有大小限制),按照科学计数法表示时,一个浮点数的小数点位置是可变的,所以称为浮点数。浮点数可以用数学写法,如1.2,3.14,但对于很大或很小的浮点数,就需要用科学计数法表示,1.23x就是1.23e9。
Number(数字)------布尔值(bool)
在Python中,可以直接用True、False表示布尔值(请注意大写),布尔值可以用and、or、not运算,and运算是与运算,or运算是或运算,not运算是非运算(优先级为not>and>or)。在数值上下文环境中True当作1,False当作0。
Number(数字)------复数(complex)
数字总结:
a、Python可以同时为多个变量赋值,如a,b = 1,2
b、一个变量可以通过赋值指向不同类型的对象
c、数值除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数
d、在混合运算中,Python会把整型转换为浮点数
字典是python中映射类型(Mapping Type),它把"键"(key)映射到"值"(value),通过key可以快速找到value,它是一种"键值对"数据结构。这里的"键"是任意不可变类型对象(可以做hash,即具有hash()和eq()方法对象),通常是字符串和数字,同一个字典中键是唯一的,不能是列表!"值"可以是任何类型数据。字典是一组用花括号括起来、逗号分隔的键值对,键值对用冒号隔开键与值。格式:d = {key1:value1,key2:value2}
字典(dict)相关的内置函数
函数 | 含义 | 用法 |
---|---|---|
len() | 返回字典的长度,是键的个数,也是值的个数,也是键值对的个数。空字典长度为0 | len({'a':1,'b':2}) #2len({}) #0 |
any() | 类似于对列表、元组的操作,不过函数检验的是字典的键。any():只要字典有一个键为True则返回True | any({'':1,0:'abc',False:111}) #Falseany({'a':1,0:'abc',False:111}) #Trueany({}) #False |
all() | all():只有字典的所有键都为True才返回True | all({'':1,0:'abc',False:111}) #Falseall({'a':1,0:'abc',False:111}) #Falseall({}) #True,没有键却认为所有键都为True |
sorted() | 把字典的所有key当做一个列表(或元组)进行排序 | sorted({'a':1,'c':3,'b':4}) #['a','b','c'] |
字典(dict)的内置方法
方法 | 功能 | 示例 |
---|---|---|
keys() | 返回键(key)(类型是dict_keys)。这个view对象可以动态查看字典内部的对象,当字典改变后,这个view对象也会反应变化 | d1 = dict(a=1,b=2,c=3,d=4)kk = d1.keys()type(kk) #<class 'dict_keys'>for k in kk: print(k) #a b c dd1['e'] = 5 #修改了字典for k in kk: #没有重新获取kk,但kk已经发生了变化 print(k) #a b c d e |
values() | 返回值(values)(类型是dict_values)。 | d1 = dict(a=1,b=2,c=3,d=4)vv = d1.values()type(vv) #<class 'dict_values'>for v in vv: print(v) #1 2 3 4d1['e'] = 5for v in vv: print(v) #1 2 3 4 5 |
items() | 返回键值对(key-value)(类型是dict_items) | d1 = dict(a=1,b=2,c=3,d=4)ii = d1.items()type(ii) #<class 'dict_items'>for i in ii: print(i) #('a',1) ('b',2) ('c',3) ('d',4)d1['e'] = 5for i in ii: print(i) #('a',1) ('b',2) ('c',3) ('d',4) ('e',5) |
get() | 获取key对应的value,可设置默认值 | d1 = dict(a=1,b=2,c=3,d=4)d1.get('a') #1d1.get('lili',100) #100 |
clear() | 清空一个字典 | d1 = dict(a=1,b=2,c=3,d=4)d1.clear() #{} |
copy() | 在Python中,把列表、字典对象赋值给变量时,都是“浅拷贝”,即变量指向了对象,原来的对象改变了,这个变量的值也会跟着变。而copy()函数是“深拷贝”,重新创造一个新的对象赋值给变量,原来的对象的改变不影响新对象。 | >>> d1 = {'a':1}>>> d2 = d1 #浅拷贝>>> d3 = d1.copy() #深拷贝>>> d1['b'] = 2 #改变原来字典>>> d1{'a': 1, 'b': 2}>>> d2 #d2也跟着改变{'a': 1, 'b': 2}>>> d3 #深拷贝d3还是原来的值{'a': 1} |
pop(key) | 删除key及其所对应的值,返回值为被删除键所对应的值。 | >>> d1 = {'a': 1, 'b': 2}>>> d1.pop('a')1>>> d1{'b': 2} |
popitem() | 随机删除字典中一对键和值,返回值为被删除的键值对 | >>> d1 = {'a':1,'b':2,'c':3}>>> d1.popitem()('c', 3)>>> d1{'a': 1, 'b': 2} |
fromkeys(seq,[val]) | 创建一个字典,以序列seq中元素做字典的键,val(可选)为字典所有键对应的值 | >>> d = {}>>> d.fromkeys([1,2,3]){1: None, 2: None, 3: None}>>> d.fromkeys([1,2,3],1){1: 1, 2: 1, 3: 1} |
update() | 用一个字典来更新另一个字典 | >>> d = d.fromkeys([1,2,3],0)>>> d{1: 0, 2: 0, 3: 0}>>> d.update({1:10,2:20})>>> d{1: 10, 2: 20, 3: 0} |
字符串是用单引号‘’或者双引号“”括起来的任意文本。‘’或“”本身只是一种表示方式,不是字符串的一部分,因此,字符串“abc”只有a,b,c这3个字符。如果单引号内部又包含单引号(或双引号内部又包含双引号)怎么办?可以使用转义字符 \ 来标识。转义字符 \ 可以转义很多字符,如 \n 表换行,\t 制表符,字符\本身也要转义,那就用 \\ 表示\。
Python还允许用原始字符串 r' ' 表示' '内部字符串默认不转义。
字符串总结:
a、Python中字符串用单引号或者双引号括起来没有任何区别,完全相同
b、转义符 \ ,使用 r 可以让反斜杠不发生转义。如r"hello,\n123"则\n会显示,而非换行
c、按字面意义级联字符串,如"My name","is",":","Aamax","!"会得到My name is : Aamax !
d、字符串可以用 + 运算符或''.join连接在一起,用 * 运算符重复
e、Python中字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始
f、Python中字符串不能改变,Python中没有单独字符类型,一个字符就是长度为1的字符串。
g、字符串截取语法格式:变量[头下标:尾下标:步长]
h、ord()函数获取字符的整数表示,如ord('A')=65,chr()函数把编码转化为对应的字符,如chr(66)='B' ,由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。以Unicode表示的str通过encode()方法可以编码为指定的bytes,反过来,要把bytes变为str,就需要使用decode()方法。要计算str包含多少字符,可以用len()函数。
list是一组用方括号括起来、逗号分隔的数据。列表的元素可以是任何类型,但使用时通常各个元素类型是相同的。如列表list_a有5个元素,分别是字符串、布尔值、整数、浮点数、和列表:list_a = ['a',True,3,1.2,[3,9]]
list运算符 、内置函数、内置方法
运算符 | 含义 | 表达式 | 结果 |
---|---|---|---|
| 列表合并在一起 | ['a', 'b', 'c'] + [1, 2, 3] | ['a', 'b', 'c', 1, 2, 3] |
* | 列表重复 ['a'] * 3 | ['a'] * 3 | ['a', 'a', 'a'] |
in | 是否为列表元素 | 'a' in ['a', 'b'] | True |
list(列表)相关的内置函数
函数 | 含义 | 用法 |
---|---|---|
len() | 计算列表长度,即计算列表中元素个数 | len([1,2,3]) #3 |
max() | 返回列表元素中最大值,列表元素必须是同一类型且可比较,比如都是数字型或都是字符串,如果类型不统一就会报错。 | max(['a','b','c']) #c |
min() | 返回列表元素中的最小值。元素类型要求跟max()一样。 | min([1,2,3]) #1min(['a','b','c']) #a |
sum() | 计算列表所有元素的和,其元素类型必须是数值型的(整数、浮点数) | sum([1,2,3]) #6 |
sorted() | 返回一个排序的列表,但并不改变原列表。 | sorted([1,0,-1,4]) #[-1, 0, 1, 4]sorted(['ab','da','c','f']) #['ab', 'c', 'da', 'f'] |
list() | 生成一个空列表,或把其它类型数据转换成list。 | list() #[]list('python') #['p', 'y', 't', 'h', 'o', 'n'] |
any() | 只要列表中有一个元素是True就返回True | any([0,1,'']) #True |
all() | 只有列表所有元素为True才返回True | all([0,'','2']) #Falseall([1,'a','2']) #True |
list(列表)的内置方法
方法 | 功能 | 示例 | 结果 |
---|---|---|---|
append() | 把一个元素加到列表尾部 | L = ['a','b','c','a','d','a'];L.append('A');print(L) | L变为['a','b','c','a','d','a','A'] |
insert() | 把一个元素插到列表指定位置 | L = ['a','b','c','a','d','a'];L.insert(1,'A');print(L) | L变为['a','A','b','c','a','d','a'] |
remove() | 删除列表中某个值的第一个匹配项 | L = ['a','b','c','a','d','a'];L.remove('a');print(L) | L变为['b','c','a','d','a'] |
pop() | 删除列表中指定位置元素(默认最后一个元素) | L = ['a','b','c','a','d','a'];L.pop(2);print(L) | L变为['a','b','a','d','a'] |
clear() | 清空列表 | L = ['a','b','c','a','d','a'];L.clear();print(L) | L变为[] |
index() | 从列表中找出某个值第一个匹配项的索引位置 | L = ['a','b','c','a','d','a'];print(L.index('a')) | 0 |
count() | 统计某个元素在列表中出现的次数 | L = ['a','b','c','a','d','a'];print(L.count('a')) | 3 |
sort() | 对原列表进行排序 | L = ['a','b','c','a','d','a'];L.sort();print(L) | L变为['a','a','a','b','c','d'] |
reverse() | 将列表倒置 | L = ['a','b','c','a','d','a'];L.reverse();print(L) | L变为['a','d','a','c','b','a'] |
元组(tuple)与列表类似,不同之处在于元组元素不能修改。元组写在小括号()里,元素之间用逗号隔开。
注:如果定义只有1个元素的元组,如果这么定义:t = (1),定义的不是元组,而是1这个数!因为括号()就可以表示元组,又可以表示数学公式中的小括号,这就产生了歧义。因此,这种情况下按小括号进行计算,所以只有1个元素的元组定义时必须加一个逗号来消除歧义,如t = (1,)
元组运算符
运算符 | 含义 | 表达式 | 结果 |
---|---|---|---|
| 合并在一起 | ('a', 'b', 'c') + (1, 2, 3) | ('a', 'b', 'c', 1, 2, 3) |
* | 重复 | ('a',) * 3 | ('a', 'a', 'a') |
in | 是否为元素 | 'a' in ('a', 'b') | True |
tuple(元组)相关的内置函数
函数 | 含义 | 用法 |
---|---|---|
len() | 计算元组长度,即计算元组中元素个数 | len((1,2,3)) #3 |
max() | 返回元组元素中最大值,元组元素必须是同一类型且可比较,比如都是数字型或都是字符串,如果类型不统一就会报错。 | max(('a','b','c')) #c |
min() | 返回元组元素中的最小值。元素类型要求跟max()一样。 | min((1,2,3)) #1min(('a','b','c')) #a |
sum() | 计算元组所有元素的和,其元素类型必须是数值型的(整数、浮点数) | sum((1,2,3)) #6 |
sorted() | 返回一个排序的元组,但并不改变原元组。 | sorted((1,0,-1,4)) #(-1, 0, 1, 4)sorted(('ab','da','c','f')) #('ab', 'c', 'da', 'f') |
tuple() | 生成一个空元组,或把其它类型数据转换成元组。 | tuple() #()tuple('python') #('p', 'y', 't', 'h', 'o', 'n') |
any() | 只要元组中有一个元素是True就返回True | any((0,1,'')) #True |
all() | 只有元组所有元素为True才返回True | all((0,'','2')) #Falseall((1,'a','2')) #True |
元组(tuple)的内置方法
方法 | 功能 | 示例 | 结果 |
---|---|---|---|
index() | 从元组中找出某个值第一个匹配项的索引位置 | T = ('a','b','c','a','d','a');print(T.index('a')) | 0 |
count() | 统计某个元素在元组中出现的次数 | T = ('a','b','c','a','d','a');print(T.count('a')) | 3 |
拆包
#拆包 a,b,c,d = 1,2,3,4 print(a,b,c,d) #1 2 3 4 x = (1,2,3,4,5,6) a,*b = x #x有6个元素,左边变量只有2个,多余的都被带*的b吸收了 print(a,b) #1 [2, 3, 4, 5, 6] a,*b,c = x #多余的都被带*的b吸收了 print(a,b,c) #1 [2, 3, 4, 5] 6 *a,b,c = x #多余的都被带*的a吸收了 print(a,b,c) #[1, 2, 3, 4] 5 6
元组总结:
a、与字符串一样,元组的元素不能修改
b、元组也可以被索引和切片,方法一样
c、注意包含0或1个元素的元组的特殊语法规则。t = () #空元组,t = (2,) #一个 元素,需要在元素后添加逗号
d、元组也可以用+操作符进行拼接
集合(set)在内部实现上就是一个没有value的字典,所以它跟字典很像。集合有key但没有value(且key不重复),它的写法是这样s = {'a','b','c'},既然集合跟字典很像,那要集合干什么?集合主要测试一个对象是不是在一堆对象集里面,也就是 in 运算。这个功能其实列表也可以,但列表速度远低于集合,因为列表是顺序存储,它的时间复杂度是O(n),而集合用hash table实现的,时间复杂度为O(1)。
集合相关内置函数
函数 | 含义 | 用法 |
---|---|---|
len() | 返回集合长度,即集合包含的元素个数,空集合长度为0 | >>> len({'a','b','c'})3>>> len({})0 |
any() | 类似于对列表、元组的操作any():只要集合有一个元素为True则返回True | >>> any({'',0,False})False>>> any({'a',0,False})True>>> any({})False |
all() | all():只有集合的所有元素都为True才返回True | >>> all({'',0,False})False>>> all({'a',0,False})False>>> all({})True |
sorted() | 跟操作列表、元组效果一样,它把集合的所有元素进行排序 | >>> sorted({'d','b','a','c'})['a', 'b', 'c', 'd'] |
集合的内置方法
方法 | 功能 | 示例 |
---|---|---|
add(x) | 把对象x添加到集合中 | >>> s = {'a','b','c'}>>> s.add(1)>>> s{1, 'a', 'b', 'c'} |
update() | 把多个对象添加到集合中 | >>> s = {'a','b','c'}>>> s.update([1,2,3])>>> s{1, 2, 3, 'c', 'a', 'b'}>>> s.update(['x','y'],{8,9})>>> s{1, 2, 3, 8, 9, 'c', 'x', 'a', 'b', 'y'} |
discard(x)remove(x) | 两个都是从集合中删除一个元素x,不同的是,如果x不在集合中,discard()会忽略;而remove()会抛出KeyError错误 | >>> s = {'a','b','c'}>>> s.discard('a') #删除a>>> s{'b', 'c'}>>> s.remove('c') #删除c>>> s{'b'}>>> s.discard('x') #删除x,集合中没有x,忽略>>> s.remove('x') #删除x,集合中没有x,报错Traceback (most recent call last): File "<stdin>", line 1, in <module>KeyError: 'x' |
pop() | 类似于字典和列表中pop(),都是从其中删除一个元素并返回该元素。因为集合没有key和索引的概念,所以集合pop()不带参数。 | >>> s = {'a','b','c'}>>> s.pop()'a'>>> s{'b', 'c'} |
clear() | 清空一个集合 | >>> s = {'a','b','c'}>>> s.clear()>>> sset() |
copy() | 跟字典中的copy()一样,返回一个集合的深拷贝 | >>> s1 = {'a','b','c'}>>> s2 = s1.copy()>>> s2{'a', 'b', 'c'}>>> s1.add(1)>>> s1{1, 'a', 'b', 'c'}>>> s2{'a', 'b', 'c'} |
union() | 求两个或多个集合的并集 | >>> s1 = {'a','b','c'}>>> s2 = {1,2,3}>>> s1.union(s2){1, 'a', 2, 3, 'b', 'c'} |
intersection() | 求两个多多个集合的交集 | >>> s1 = {'a','b','c'}>>> s2 = {'a','b',1,2}>>> s1.intersection(s2){'a', 'b'} |
difference() | 求一个集合与另一个或多个集合的差集,相当于集合减法 | >>> s1 = {'a','b','c'}>>> s2 = {'a','b',1,2}>>> s1.difference(s2) #返回s1包含却不在s2中的元素组成的集合{'c'}>>> s2.difference(s1)#返回s2包含却不在s1中的元素组成的集合{1, 2} |
symmetric_difference() | 两个集合中除去交集之外的元素集合 | >>> s1 = {'a','b','c'}>>> s2 = {'a','b',1,2}>>> s1.symmetric_difference(s2){1, 2, 'c'} |
intersection_update() | 同intsersection()一样求得新集合,但此方法改变调用它的对象 | >>> s1 = {'a','b','c'}>>> s2 = {'a','b',1,2}>>> s1.intersection(s2){'a', 'b'}>>> s1 #s1不变{'a', 'b', 'c'}>>> s1.intersection_update(s2)>>> s1 #s1发生了变化{'a', 'b'} |
difference_update() | 同difference()一样求得新集合,并用新集合改变调用该方法的集合。 | >>> s1 = {'a','b','c'}>>> s2 = {'a','b',1,2}>>> s1.difference(s2){'c'}>>> s1 #s1不变{'a', 'b', 'c'}>>> s1.difference_update(s2)>>> s1 #s1发生了变化{'c'} |
symmetric_difference_update() | 同symmetric_difference()一样求得新集合,并用新集合改变调用该方法的集合 | >>> s1 = {'a','b','c'>>> s2 = {'a','b',1,2}>>> s1.symmetric_difference(s2){1, 2, 'c'}>>> s1{'a', 'b', 'c'}>>> s1.symmetric_difference_update(s2)>>> s1{1, 2, 'c'}--------------------- 版权声明:本文为CSDN博主「Aamax」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/xjtuse123/article/details/90519146 |
isdisjoint() | 如果两个集合没有交集则返回True | >>> s1 = {'a','b','c'}>>> s2 = {1,2,3}>>> s1.isdisjoint(s2)True |
issubset() | 判断一个集合是不是另一个集合的子集 | >>> s1 = {'a','b','c'}>>> s2 = {'a'}>>> s2.issubset(s1)True |
issuperset() | 判断一个集合是不是另一个集合的超集 | >>> s1 = {'a','b','c'}>>> s2 = {'a','b'}>>> s1.issuperset(s2)True |
集合总结:
a、可以用大括号{}或者set()函数创建集合,但是创建一个空集合必须用 set() 而不是 {} ,因为 {} 创建的是一个空字典!注意区分set([1,2,3])与{[1,2,3,]},set([1,2,3])返回set类型,合法。而{[1,2,3]}将可变类型放入集合中,报错!!!
空值
空值是Python中的一个特殊的值,用None表示,None不能理解为0或者False,因为0或False有意义,而None是一个特殊的空值。如果我们自己定义的函数没有返回值,Python会自动返回None。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。