Python组合数据类型

组合数据类型主要分为三类:序列类型、映射类型、集合类型。

一、序列类型

元素间存在次序关系,可通过序号访问。元素本身也可以是序列类型。

在序列类型中,比较重要的是字符串(str),元组(tuple),列表(list)。其中:

字符串:单一字符的有序组合,字符串也可以被看做基本数据类型。

元组:包含0或多个数据项的不可变序列类型。元组生成后是固定的,其中任何数据不可被替换或删除。

列表:是一个可修改数据项的序列,使用灵活。

序列的操作符和函数:

x in s如果x是s的元素,返回True,否则返回False
x not in sx不是s的元素返回True,否则False
s+t连接s和t
s*n或n*s将序列s复制n次
s[i]索引,返回s的第i个元素
s[i:j]分片,返回第i到第j-1个元素(子序列)
s[i:j:k]

步骤分片,返回i到j-1范围内以k为步长的子序列

len(s)返回s的长度
min(s)序列s的最小元素
max(s)最大元素
s.index(x[,i[,j]])序列s中从i到j第一次出现x元素的位置
s.count(x)序列s中出现x的总次数

一、元组的定义(两种方式):生成元组只需要用逗号将元素隔开即可,元组的元素可以是一个元组。

1.不带括号(括号不是必须的):

creature =  "cat","dog","tiger"
creature

输出为该元组:

('cat','dog','tiger')

2.带括号的:

color = ("red",0x001100,"blue",creature)
color

在这个定义的例子中,可以看出,元组color的第四个元素是上例中的元组creature,输出为:

('red',4352,'blue',('cat','dog','tiger'))

以上元组可通过顺序索引来访问其中的元素,例如使用color[2]来访问第二个元素'blue',也可以多级索引切片来访问元组中的元组,例如,用color[-1][2]来访问color[-1]即creature中第二个元素'tiger'。

二、列表类型:

列表(list)也是序列类型,与元组不同,列表长度内容可变,没有长度限制,元素类型可以不同,使用更加灵活。

列表使用中括号[]表示,也可以用list()将元组或字符串转换成列表,直接使用list()会生成一个空列表,生成一个列表的操作如下:

>>>ls = [123,"abc",[22,"aaa"],123]

>>>ls

[123,"abc",[22,"aaa"],123]

>>>list("我正在学习Python")

['我','正','在','学','习','P','y','t','h','o','n']

>>>list(("我正在学习Python"))

["我正在学习Python"]

列表类型的操作

ls[i] = x将第i数据替换为x
ls[i:j] = lt用列表lt替换列表ls中第i个到第j个数据,不包含第j个
ls[i:j:k] = lt用列表lt替换i到j不包含j,步长为k。
del  ls[i:j]删除i到j,不含j
del  ls[i:j:k]删除i到j步长为k,不含j
ls+=lt或ls.extend(lt)将lt的元素增加到ls中
ls *=n更新列表ls,使其元素重复n次
ls.append(x)在列表最后增加一个元素x
ls.clear()删除所有元素
ls.copy()生成一个新列表,与ls相同
ls.sort()将列表中元素排序
ls.insert(i,x)在列表的i位置处增加元素x
ls.pop(i)取出第i个元素并从列表中删除
ls.remove(x)将列表中出现的第一个x删除
ls.reverse()将列表中元素反转

二、集合类型

包含0到多个数据项的无序组合,其中元素不可重复,元素类型也只能是固定数据类型,如整数、浮点数、字符串、元组。不可以是列表、字典、和集合类型本身。

集合是无序组合,没有索引和位置概念,因此不能切片,但可以动态增加或删除。

集合的定义:

1.直接赋值定义

使用大括号{}生成一个集合,例如:

>>>S = {123,"ads",("aaa",50),666}

>>>S

{123,"ads",("aaa",50),666}

集合中元素不重复,如下例:

>>>T = {123,"ads",("aaa",50),666,"ads",123}

>>>T

{123,"ads",("aaa",50),666}

可以看出,定义这个集合时重复的“ads”,123,两个重复的元素在输出时都没有重复出现。

2.使用函数定义:

使用函数set()可以生成一个集合,输入的参数可以是任何组合数据类型,返回结果是一个无重复且排序任意的集合,例如:

>>>A = set("apple")

>>>A

{'l','e','a','p'}

>>>B = set((123,"ads",("aaa",50),666))

>>>B

{123,"ads",("aaa",50),666}

集合类型操作符
S-T或S.difference(T)返回一个新集合,包括在S中但不在T中的所有元素
S-=T或S.difference_update(T)更新集合S,效果同上,剔除T中含有的元素
S&T或S.intersection(T)返回新集合,包含S和T中所有元素
S&=T或S.intersection_update(T)更新集合S,相当于加上T
S^T或s.symmetric_difference(T)

返回新集合,包含S和T中的元素,但不包含S和T中都有的元素

S=^T或s.symmetric_difference_update(T)更新集合S,包含S和T中元素,不包含两者都有的元素
S|T或S.union(T)返回一个集合,包含S和T中所有元素
S<=T或S.issubest(T)S是T的子集或两者相同返回True,否则返回False
S>=T或S.issuperset(T)相同或S是T的超集,返回True,否则False

上述表达了数学中集合的集中操作,包括交集,并集,差集,补集,操作逻辑与数学定义相同。

集合类型的函数
S.add(x)如果x不在S中,则将x加入
S.clear()清空S
S.copy()返回S的副本
S.pop()随机返回S中一个元素,如果S为空则KeyError异常
S.discard(x)若x在S中,则移除x;x不在S中,不报错
S.remove(x)若x在S中,移除;不在则KeyError异常
S.isdiskoint(T)如果S和T中没有相同元素则返回True
len(S)返回元素个数
x  in Sx是S的元素返回True,否则返回False
x  not in S与上面相反

三、映射类型

是“键-值”数据项的组合,每个元素都是一对键值对,在Python中,映射类型主要以字典的方式体现。

字典的建立模式(键和值之间用冒号连接):

{<键1>:<值1>,<键2>:<值2>,...,<键n>:<值n>}

实例如下:

>>>Dcountry = {"中国":"北京",''英国":"伦敦"}

>>>print(Dcountry)

{'中国':'北京','英国':'伦敦'}

字典打印出的顺序可能与定义时的顺序有所不同,元素之间没有顺序之分。

字典可以通过键来查找值:例如延续上例

>>>Dcountry["中国"]

'北京'

字典中对某个键值的修改方式如下:

>>>Dcountry["中国"]="京"

实现对这个键对应的值改变。

字典类型的操作:

1.增加键值对:

以上文实例为基础,增加键值对“法国”-“巴黎”通过一下语句实现:

>>>Dcountry["法国"]="巴黎"

>>>print(Dcountry)

{'中国':'北京','英国':'伦敦','法国':'巴黎'}

2.创建空字典

直接使用空的大括号{}可以创建一个空字典。注意:直接使用大括号生成的类型是空字典,而生成空的集合必须使用函数set()

3.字典的一些常用方法(开头的<d>为一种格式,内容为某个字典的名称)

<d>.keys()返回所有的键信息
<d>.values()返回所有值信息
<d>.items()返回所有键值对
<d>.get(<key>,<default>)键存在则返回对应值,否则返回默认值
<d>.pop(<key>,<default>)键存在返回对应值,同时删除键值对,否则返回默认值
<d>.popitem()随机取出一个键值对,按照元组(key,values)的形式返回
<d>.clear()删除所有键值对
del<d>[<key>]删除某一键值对
<key>in<d>如果键在字典中,返回True,否则返回False

4.对字典的遍历:

通过以下格式实现(以实例展现):

>>>for  key  in  Dcountry:

             print(key)

中国

英国

法国

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D D D D C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值