前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python基础--数据类型

python基础--数据类型

原创
作者头像
ypoint
修改2019-08-15 17:17:37
1.5K1
修改2019-08-15 17:17:37
举报
文章被收录于专栏:学习python学习python

数据类型:

在Python3中有六个标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典),

不可变数据(3个)--->Number(数字)、String(字符串)、Tuple(元组);

可变数据(3个)--->List(列表)、Set(集合)、Dictionary(字典)

1 数字

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会把整型转换为浮点数

2.字典

字典是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}

3 字符串

字符串是用单引号‘’或者双引号“”括起来的任意文本。‘’或“”本身只是一种表示方式,不是字符串的一部分,因此,字符串“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()函数。

4 列表

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']

5 元祖

元组(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、元组也可以用+操作符进行拼接

6 集合

集合(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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据类型:
    • 1 数字
      • 2.字典
        • 3 字符串
          • 4 列表
            • 5 元祖
              • 6 集合
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档