Python-数据类型

python的基本数据类型包括:
数字(int)
布尔值(bool)
字符串(str)
集合(set)
列表(list)
元组(tuple)
字典(dict)


数字(int)

数字类型包括:浮点型(float)、整数型(int)、长整型(long)、复数型(complex)

用int函数将字符串按指定进制转换为整数:
>>> int('111')          #默认按十进制装换
111

>>> int('111',2)        #按二进制转换
7

>>> int('111',8)        #按八进制转换
73

>>> int('111',16)       #按十六进制转换
273
整数转换为对应进制字符串:
>>> bin(666)          #转换为二进制字符串
'0b1010011010'

>>> oct(666)         #转换为八进制字符串
'0o1232'

>>> hex(666)         #转换为十六进制字符串
'0x29a'

字符串(str)

python字符串常量可用多种方式表达:
-单引号:'hello'
-双引号:"hello"
-三引号:'''hello'''
-带r或R前缀:r'hello'、R'hello'
-带u或U前缀:u'hello'、U'hello'

字符串的创建:
>>> x=str('hello')       #创建字符创对象
>>> x
'hello'

>>> type(x)              #检测字符串对象类型

转义字符:
转义字符 说明 转义字符 说明
\\ 反斜杠 \n 换行符
\' 单引号 \" 双引号
\a 响铃符 \b 退格符
\r 回车符 \r 换页符
\t 水平制表符 \v 垂直制表符
\0 Null,空字符串 \ooo 八进制值表示的ASCII码对应字符
\xhh 十六进制值表示的ASCII码对应字符
字符串的基本操作:
>>> len('hello')                 #求字符串的长度
5
#---------------------
>>> x='hello'                    #包含的判断性
>>> 'a' in x
False
>>> 'h' in x
True
#---------------------
>>> 'h''e''l''l''o'              #字符串的连接
'hello'
>>> 'he'+'llo'           
'hello'
>>> 'hello'*3
'hellohellohello'
#---------------------
>>> for i in 'hell':print(i)     #字符串的迭代
h
e
l
l
#---------------------
>>> x="hello"                    #索引
>>> x[0]
'h'
>>> x[-1]
'o'
#---------------------
>>> x="hello"                    #分片
>>> x[0]
'h'
>>> x[-1] 
'o'
>>> x="hello"
>>> x[1:3]
'el'
>>> x[1:]
'ello'
>>> x[:3]
'hel'
>>> x[:-1] #除最后一个字符,其余全部返回
'hell'
>>> x[:] #返回全部字符
'hello'

>>> x="123456789"
>>> x[1:7:2]
'246'
>>> x[::2]
'13579'
>>> x[7:1:-2]
'864'
>>> x[::-1] #将字符串反序返回
'987654321'
字符串转换:
#将整数转换为字符串
>>> str(123)       
'123'

 #将浮点数转换为字符串
>>> str(1.23)     
'1.23'

#将复数转换为字符串
>>> str(1+2j)      
'(1+2j)'
字符串的方法:
#将字符串第一个字母大写,其余为小写

>>> 'hello'.capitalize()
'Hello'
#---------------------
#将字符串的字母全部转成小写

>>> 'Hello world'.lower()
'hello world'
#---------------------
#将字符串的字母全部转成大写

>>> 'Hello world'.upper()
'HELLO WORLD'
#---------------------
#查找子字符串出现的次数

>>> 'hello,hello'.count('el')
2
#---------------------
#判断字符串是否以‘xxx’开头

>>> 'hello'.startswith('h')
True
#---------------------
#判断字符串是否以‘xxx结尾’

>>> 'hello'.endswith('o')
True
#---------------------
#查找子字符串返回第一次出现位置的偏移量

>>> x='hellohello'
>>> x.find('lo')
3
>>> x.find('lo',2)
3
>>> x.find('loo')#没找到时返回-1
-1
#---------------------
#查找子字符串返回最后一次出现位置的偏移量

>>> 'hellohello'.rfind('lo')
8
#---------------------
#与find()方法相同,只是未找到子字符串时产生ValueError异常

>>> x='hellohello'
>>> x.find('lo',2)
3
>>> x='hellohello'
>>> x.index('lo')
3
>>> x.index('lo',2)
3
>>> x,index('loo')
Traceback (most recent call last):
  File "", line 1, in 
    x,index('loo')
NameError: name 'index' is not defined
#---------------------
#字符串格式化,将字符串用{}定义的替换预一次用参数表示

>>> 'My name is {0},age is{1}'.format('Jayss',20)
'My name is Jayss,age is20'
>>> 'My name is {name},age is{age}'.format_map({'name':'Jayss','age':20})
'My name is Jayss,age is20'
#---------------------
#由数字或字母组成时返回True

>>> '123'.isalnum()
True
>>> '123abc'.isalnum()
True
>>> '123&abc'.isalnum()
False
#---------------------
#字符串字符全部是字母时返回True

>>> 'Hello'.isalpha()
True
>>> 'Hello&Hello'.isalpha()
False
#---------------------
#字符串字符全部是大写字母时返回True

>>> 'HELLO'.isupper()
True
>>> 'Hello'.isupper()
False
#---------------------
#字符串字符全部是小写字母时返回True

>>> 'hello'.islower()
True
>>> 'Hello'.islower()
False
#---------------------
#字符串字符全部是数字时返回True

>>> '123'.isdecimal()
True
>>> '123abc'.isdecimal()
False

集合

唯一、无序、不可改变

创建集合:
#直接使用集合常量
>>> x={1,2,3}
>>> x
{1, 2, 3}

#用集合常量做参数创建集合对象
>>> set({1,2,3})
{1, 2, 3}

#用列表常量做参数创建集合对象
>>> set([1,2,3])
{1, 2, 3}

#用字符串常量做参数创建集合对象
>>> set('123')
{'1', '2', '3'}

#创建空集合
>>> set()
set()
>>> type({})

集合运算:
#定义集合
>>> x={1,2,'a','b'}
>>> y={3,4,'c','d'}

#求集合中元素的个数
>>> len(x)
4

#判断元素是否属于集合
>>> 'a' in x
True

#求差集
>>> x - y
{1, 2, 'a', 'b'}

#求并集
>>> x|y
{1, 2, 3, 'd', 4, 'c', 'a', 'b'}

#求求交集
>>> x&y
set()

#求对称差
>>> x^y
{1, 2, 3, 'd', 4, 'c', 'a', 'b'}

#比较运算符可用于判断子集或超集关系
>>> x>> {1,2}
基本操作:
#创建集合

>>> x={1,2}
>>> x
{1, 2}
#---------------------
#复制集合对象

>>> y=x.copy()
>>> y
{1, 2}
#---------------------
#危机和添加一个元素

>>> x.add('abc')
>>> x
{'abc', 1, 2}
#---------------------
#危机和添加多个元素
>>> x.update({'a','b'})
>>> x
{1, 2, 'abc', 'a', 'b'}
#---------------------
#从集合中删除指定元素

>>> x.remove('abc')
>>> x
{1, 2, 'a', 'b'}
#---------------------
#从集合中删除指定元素

>>> x.discard('a')
>>> x
{1, 2, 'b'}
#---------------------
#从集合中随机删除一个元素并返回该元素

>>> x.pop()
1
>>> x
{2, 'b'}
#---------------------
#删除集合中的全部元素

>>> x.clear()
>>> x
set()
冻结集合:

冻结集合是一个不可改变的集合,可作为其它集合的元素

#创建冻结集合
>>> x=frozenset([1,2,3])
>>> x          #冻结集合的打印格式与普通集合不同
frozenset({1, 2, 3})

#创建普通集合
>>> y=set([4,5])
>>> y
{4, 5}

#将冻结集合作为元素加入另一集合
>>> y.add(x)
>>> y
{frozenset({1, 2, 3}), 4, 5}

#为冻结集合添加元素,报错
>>> x.add(123)
Traceback (most recent call last):
  File "", line 1, in 
    x.add(123)
AttributeError: 'frozenset' object has no attribute 'add'

列表

有序、可变、可直接修改

创建列表:
#创建一个空列表对象
>>> []
[]
>>> list()
[]

#不同类型数据创建列表对象
>>> [1,'a',(1,2,3),[1,2,3]]
[1, 'a', (1, 2, 3), [1, 2, 3]]

#迭代对象创建列表对象
>>> list('abcdef')
['a', 'b', 'c', 'd', 'e', 'f']

#用连续整数创建列表对象
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

#用元组创建列表对象
>>> list((1,2,3))
[1, 2, 3]
基本操作:
#求长度

>>> len([])
0
>>> len([1,2,3])
3
#---------------------
#合并

>>> [1,2]+[3,4]
[1, 2, 3, 4]
#---------------------
#重复

>>> [1,2]*3
[1, 2, 1, 2, 1, 2]
#---------------------
#迭代

>>> x=[1,2,(1,2,3),[1,2,3]]
>>> for i in x :print(i)
1
2
(1, 2, 3)
[1, 2, 3]
#---------------------
#关系判断

>>> 2 in [1,2,3]
True
>>> 'a' in [1,2,3]
False
#---------------------
#索引

>>> x=[1,2,['a','b','c']]
>>> x[0]
1
>>> x[2]
['a', 'b', 'c']
>>> x[2][1]
'b'
>>> x[0]=11      #修改第一个列表对象
>>> x
[11, 2, ['a', 'b', 'c']]
#---------------------
#分片

>>> x=list(range(10))      #创建列表对象
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x[2:5]                 #返回分片列表
[2, 3, 4]
>>> x[:5]
[0, 1, 2, 3, 4]
>>> x[2:]
[2, 3, 4, 5, 6, 7, 8, 9]
>>> x[2:2:7]
[]
>>> x[2:5]='abc'           #通过分片替换多个对象
>>> x
[0, 1, 'a', 'b', 'c', 5, 6, 7, 8, 9]
#---------------------
#矩阵

>>> x=[[1,2,3],[4,5,6],[7,8,9]]
>>> x[0]
[1, 2, 3]
>>> x[0][0]
1
常用方法:
#添加单个对象:append()

>>> x=[1,2,3]
>>> x.append('abc')
>>> x
[1, 2, 3, 'abc']
#---------------------
#添加多个对象:extend()

>>> x=[1,2,3]
>>> x.extend(['a','b'])    #添加多个对象时,需要以列表为整体
>>> x
[1, 2, 3, 'a', 'b']
>>> x.extend('abc')        #使用extend添加单个字符串时,会被拆分
>>> x
[1, 2, 3, 'a', 'b', 'a', 'b', 'c']
#---------------------
#插入对象:insert()

>>> x=[1,2,3]
>>> x.insert(1,'abc')      #1表示插入的偏移位置
>>> x
[1, 'abc', 2, 3]
#---------------------
#按值删除对象:remove(),若有重复,则删除第一个

>>> x=[1,2,2,3]
>>> x.remove(2)
>>> x
[1, 2, 3]
#---------------------
#按位置删除:pop()

>>> x=[1,2,3,4,5,6]
>>> x.pop()    #删除并返回最后一个对象
6
>>> x
[1, 2, 3, 4, 5]
>>> x.pop(1)    #删除并返回偏移量为1的对象
2
>>> x
[1, 3, 4, 5]
#---------------------
#用del语句删除

>>> x=[1,2,3,4,5,6]
>>> del x[0]      #删除第一个对象
>>> x
[2, 3, 4, 5, 6]
>>> del x[2:4]     #删除偏移量为2、3的对象
>>> x
[2, 3, 6]
#---------------------
#删除全部对象:clear()

>>> x=[1,2,3]
>>> x.clear()
>>> x
#---------------------
#复制列表:copy(),只是复制一维列表(没有真正复制到里面的列表内容)

>>> x=[1,2,3]
>>> y=x.copy()
>>> y
[1, 2, 3]
#深复制:追根溯源(要导入copy模块)copy.deepcopy()
#---------------------
#列表排序:sort()(全为数字则从小到大排序,全为字符串则按字典书序排序,若包含多种类型则出错)

>>> x=[1,3,5,8,2]                      #对全为数字列表排序
>>> x.sort()
>>> x
[1, 2, 3, 5, 8]
>>> x=['b','a','ddd','abc','AB','BA']  #对全为字符串列表排序
>>> x.sort()
>>> x
['AB', 'BA', 'a', 'abc', 'b', 'ddd']    #对全为字符串列表排序
>>> x=['abc','123']
>>> x.sort()
>>> x
['123', 'abc']
>>> x=[1,2,3,'abc']                    #对混合类型列表排序时,报错
>>> x.sort()
Traceback (most recent call last):
  File "", line 1, in 
    x.sort()
TypeError: '<' not supported between instances of 'str' and 'int'
#---------------------
#反转对象顺序:reverse()

>>> x=[1,2,3]
>>> x.reverse()
>>> x
[3, 2, 1]

元组

有序、不可改变、不可添加也不可删除

创建元组:
#创建空的元组对象
>>> ()
()
>>> tuple()
()

#创建一个对象的元组(逗号不能少)
>>> (1,)
(1,)

#用字符串创建元组,可迭代对象均可用于创建元组
>>> tuple('hello')
('h', 'e', 'l', 'l', 'o')

#用解析结构创建元组
>>> tuple(i*2 for i in range(5))
(0, 2, 4, 6, 8)

基本操作:
#求长度

>>> len((0,1,2,3,4,5))
6
#---------------------
#合并

>>> (1,2)+('a','b')+(2.45,)
(1, 2, 'a', 'b', 2.45)
#---------------------
#重复

>>> (1,2)*3
(1, 2, 1, 2, 1, 2)
#---------------------
#迭代

>>> for x in (1,2.5,'hello',[1,2]):print(x)
1
2.5
hello
[1, 2]
#---------------------
#关系判断

>>> 'a' in ('a','b','c')
True
#---------------------
#索引和分片

>>> x=tuple(range(10))
>>> x
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> x[1]
1
>>> x[-1]
9
>>> x[3:6]
(3, 4, 5)
>>> x[1:7:2]
(1, 3, 5)
#---------------------
#矩阵

>>> x=((1,2,3),(4,5,6),(7,8,9))
>>> len(x)
3
>>> x[0]
(1, 2, 3)
>>> x[0][1]
2
常用方法:
#返回指定值在元组出现的次数:count()

>>> x=(1,2)*3
>>> x
(1, 2, 1, 2, 1, 2)
>>> x.count(1)
3
>>> x.count(3)
0
#---------------------
#查找元组中指定的值:index()

>>> x=(1,2,3)*3
>>> x
(1, 2, 3, 1, 2, 3, 1, 2, 3)
>>> x.index(2)          #默认查找全部元组
1
>>> x.index(2,2)        #从偏移量2到元组末尾中查找
4
>>> x.index(2,2,7)      #在范围[2:7]内查找
4
>>> x.index(5)          #若元组找不到指定值,报错
Traceback (most recent call last):
  File "", line 1, in 
    x.index(5)
ValueError: tuple.index(x): x not in tuple

字典

无序、长度不可变、可添加也可删除

创建字典:
#创建空字典
>>> {}
{}
>>> dict()
{}

#创建字典
>>> {'name':'jayss','age':20}
{'name': 'jayss', 'age': 20}

基本操作:
#求长度

>>> x={'name':'jayss','age':20}
>>> len(x)
2
#---------------------
#关系判断(判断的是键)

>>> x={'name':'jayss','age':20}
>>> 'name' in x
True
>>> 'sex' in x
False
>>> 'jayss' in x
False

#---------------------
#索引

#通过键来索引映射的值
>>> x={'name':{'jayss':'male','ella':'female'},'age':20}
>>> x['name']
{'jayss': 'male', 'ella': 'female'}
>>> x['name']['jayss']
'male'
#通过索引修改映射值
>>> x=dict(name='jayss',age=20)
>>> x
{'name': 'jayss', 'age': 20}
>>> x['age']=21
>>> x
{'name': 'jayss', 'age': 21}
#通过索引删除键值对
>>> x={'name':'jayss','age':20}
>>> del x['age']
>>> x
{'name': 'jayss'}
常用方法:
#删除全部字典对象:clear()
>>> x={'name':'jayss','age':20}
>>> x.clear()
>>> x
{}
#---------------------
#复制字典对象:copy()

#例一
>>> x={'name':'jayss','age':20}
>>> y = x
>>> x,y
({'name': 'jayss', 'age': 20}, {'name': 'jayss', 'age': 20})
>>> y['name']='ella'
>>> x,y
({'name': 'ella', 'age': 20}, {'name': 'ella', 'age': 20})
>>> y is x
True
#例二
>>> x={'name':'jayss','age':20}
>>> y=x.copy()
>>> x,y
({'name': 'jayss', 'age': 20}, {'name': 'jayss', 'age': 20})
>>> y['name']='ella'
>>> x,y
({'name': 'jayss', 'age': 20}, {'name': 'ella', 'age': 20})
>>> y is x
False
#---------------------
#返回键key映射的值:get(key[,default]),如果键值不存在则返回空值,可用default指定不存在的返回值

>>> x={'name':'jayss','age':20}
>>> x.get('name')          
'jayss'
>>> x.get('sex')
>>> x.get('sex','xxx')
'xxx'
#---------------------
#删除键并返回映射值:pop(key[,default]),若键值不存在则返回default,未指定default则会报错

>>> x={'name':'jayss','age':20}
>>> x.pop('age')            #删除键并返回映射值
20
>>> x
{'name': 'jayss'}
>>> x.pop('sex','xxx')      #删除不存在的键
'xxx'
>>> x.pop('sex')            #删除不存在的键,未指定default参数,报错
Traceback (most recent call last):
  File "", line 1, in 
    x.pop('sex')
KeyError: 'sex'
#---------------------
#删除并返回键值对元组:popitem(),空字典调用该方法会产生KeyError错误

>>> x={'name':'jayss','age':20}
>>> x.popitem()        #删除并返回键值对元组
('age', 20)
>>> x                  #x中剩余一个键值对
{'name': 'jayss'}
>>> x.popitem()        #删除并返回键值对元组
('name', 'jayss')
>>> x
{}
>>> x.popitem()        #删除为空的字典,报错
Traceback (most recent call last):
  File "", line 1, in 
    x.popitem()
KeyError: 'popitem(): dictionary is empty'
#---------------------
#返回映射值或者为字典添加键值对:setdefault(key[,default])

>>> x={'name':'jayss','age':20}
>>> x.setdefault('name')      #返回指定键的映射值
'jayss'
>>> x.setdefault('sex')       #键不存在,为字典添加键值对,映射值默认为None
>>> x
{'name': 'jayss', 'age': 20, 'sex': None}
>>> x.setdefault('hobby','sleep')  #添加键值对
'sleep'
>>> x
{'name': 'jayss', 'age': 20, 'sex': None, 'hobby': 'sleep'}
#---------------------
#为字典添加键值对:update(other)

>>> x={'name':'jayss','age':20}
>>> x.update({'sex':'male'})      #添加键值对
>>> x
{'name': 'jayss', 'age': 20, 'sex': 'male'}
>>> x.update(name='Mike')         #修改映射值
>>> x
{'name': 'Mike', 'age': 20, 'sex': 'male'}
>>> x.update(hobby='sleep')      #添加键值对
>>> x
{'name': 'Mike', 'age': 20, 'sex': 'male', 'hobby': 'sleep'}

字典视图:
#返回键值对视图:items()

>>> x={'name':'jayss','age':20}
>>> y=x.items()          #返回键值对视图
>>> y
dict_items([('name', 'jayss'), ('age', 20)])
>>> for i in y:print(i)  #迭代键值对视图
('name', 'jayss')
('age', 20)
#---------------------
#返回字典中所有键的视图:keys()

>>> x={'name':'jayss','age':20}
>>> y=x.keys()
>>> y
dict_keys(['name', 'age'])
#---------------------
#返回字典中所有值的视图:values()

>>> x={'name':'jayss','age':20}
>>> y=x.values()
>>> y
dict_values(['jayss', 20])
#---------------------
#键视图的集合操作

>>> x={'name':'jayss','age':20}      #创建x字典
>>> kx=x.keys()      #返回x的键视图
>>> kx
dict_keys(['name', 'age'])
>>> y={'name':'ella','age':19}       #创建y字典
>>> ky=y.keys()      #返回y的键视图
>>> ky
dict_keys(['name', 'age'])
>>> kx-ky      #求差集
set()
>>> kx|ky      #求并集
{'age', 'name'}
>>> kx&ky      #求交集
{'age', 'name'}
>>> kx^ky      #求对称差集
set()


欢迎学术交流

WeChat......

你可能感兴趣的:(Python-数据类型)