第5章组合数据类型

学习目标:

1、了解 组合数据类型的分类。

2、掌握 序列类型的特点,熟练操作列表和元组。

3、了解 集合类型特点,熟悉集合基本操作。

4、掌握 映射类型特点,熟练操作字典。

5.1认识组合数据类型

Python中常用的序列类型有字符串、列表元组。 Python中的序列支持双向索引:正向递增索引和反向递减索引正向递增索引从左向右依次递增,第一个元素的索引为0,第二个元素的索引为1,以此类推;反向递减索引从右向左依次递减,从右数第一个元素的索引为-1,第二个元素的索引为-2,以此类推。

 Python集合具备确定性、互异性和无序性三个特性。

 5.2列表

通常使用[ ]将数据包裹起来创建一个列表。
这种创建方式适用于对于列表中元素个数及其数值已知时。
列表中的元素的数据类型可以各不相同,列表中的元素也可以是列表。

列表常用函数:

切片

格式如下:

[起始值:终值:步长]

切片示例如下:

#创建列表
list=["string",23,[1,10]]
#追加列表
list.insert(2,'8411')
list1=list[0:1:]
print(list)
print(list1)

结果:

['string', 23, '8411', [1, 10]]
['string']

len()函数:计算列表长度

格式如下:

print(len(list))

示例如下:

#创建列表
list=["string",23,[1,10]]
#计算长度
print(len(list))

结果:

3

max()和min()函数:返回列表中的最大或者最小元素

格式如下:

max(列表名)
min(列表名)

示例如下:

#创建列表
t=[23,12,22,5,2,6,4,88,49]
print(t)
print(max(t))   #输出最大值
print(min(t))   #输出最小值

结果:

[23, 12, 22, 5, 2, 6, 4, 88, 49]
88
2

sorted(列表)和resersed(列表):

前者的功能是对列表进行排序,默认是按升序排序,还可在列表后面增一个reverse参数,其等于True表示按降序排序后者的功能是对列表进行逆序
格式如下:

输出正序:sorted(列表名)
按降序排序:sorted(列表名,reverse=True)
按正序排序:sorted(列表名,reverse=False)

示例如下:

t=[23,12,22,5,2,6,4,88,49]
print(t)
print(sorted(t))         #输出正序
print(sorted(t,reverse=True))    #按降序排序
print(sorted(t,reverse=False))   #按正序排序

结果:

[23, 12, 22, 5, 2, 6, 4, 88, 49]
[2, 4, 5, 6, 12, 22, 23, 49, 88]
[88, 49, 23, 22, 12, 6, 5, 4, 2]
[2, 4, 5, 6, 12, 22, 23, 49, 88]

sum(列表):对数值型列表进行求和运算,对非数值型列表运算则出错
格式如下:

sum(列表名)

示例如下 :

#创建列表
t=[23,12,22,5,2,6,4,8,49]
print(t)
print(sum(t))   #对列表求和

结果:

[23, 12, 22, 5, 2, 6, 4, 8, 49]
131

列表遍历

示例如下:

list1=["string",23,[1,10]]
#1
for L in list1:
    print(L)
#2
for i in range(len(list1)):
    print(list1[i])

结果

string
23
[1, 10]          #1
string
23
[1, 10]          #2

替换列表

和字符串不同,列表可变的,可以在列表中指定下标的值对元素进行修改.

增加元素

方法一:使用+将一个新列表附加在原列表的尾部

示例如下:

#创建列表
list=["string",23,[1,10]]
#追加列表
list1=list+['a','b']
print(list1)

结果:

['string', 23, [1, 10], 'a', 'b']

方法二:使用append()方法向列表的尾部添加一个新元素

示例如下:

#创建列表
list=["string",23,[1,10]]
#追加列表
list.append("sda")
print(list)

结果:

['string', 23, [1, 10], 'sda']

方法三:使用extend()方法将一个列表添加在原列表的尾部

示例如下:

list=["string",23,[1,10]]
#追加列表
list.append(['a','b'])
print(list)

结果:

['string', 23, [1, 10], ['a', 'b']]

方法四:使用insert()方法将一个元素插入到列表的指定位置。该方法有两个参数,第一个参数为插入位置,第二个参数为插入元素

示例如下:

#创建列表
list=["string",23,[1,10]]
#追加列表
list.insert(2,'8411')
print(list)

结果:

['string', 23, '8411', [1, 10]]

检查元素

count()函数:检查列表元素出现的次数

格式如下:

print(list.count(元素))

示例如下:

#创建列表
list=["string",23,[1,10],23,251,23]
#检查元素出现次数
print(list.count(23))

结果:

3

删除元素

1、使用del语句删除某个特定位置的元素。

格式如下:

del list(元素位数)

示例如下:

#创建列表
list1=["string",23,[1,10]]
print(list1)
del list1[1]         #删除列表第二个元素
print(list1)

结果:

['string', 23, [1, 10]]
['string', [1, 10]]

2、使用remove()方法删除某个特定值的元素

格式如下:

list.remove(元素)

示例如下:

#创建列表
list1=["string",23,[1,10]]
print(list1)
list1.remove(23)         #删除列表元素23
print(list1)

结果:

['string', 23, [1, 10]]
['string', [1, 10]]


3、使用pop()方法来弹出指定位置的元素,缺省参数时弹出最后一个元素。弹出空数组将会报错。
格式如下:

list.pop(元素位数)

示例如下:

list1=["string",23,[1,10]]
print(list1)
list1.pop(1)         #删除列表元素1
print(list1)
结果:

['string', 23, [1, 10]]
['string', [1, 10]]

字符串和列表的转化


字符串是字符的序列,而列表是值的序列,但字符的列表和字符串并不相同。若要将一个字符串转化为一个字符的列表,可以使用函数list。

格式如下:

列表=list(字符串)

示例如下:

(1)

#创建字符串
s="Python"
t=list(s)     #转换列表
print(t)

结果:

['P', 'y', 't', 'h', 'o', 'n']

(2)

#创建列表
t=['p','y','t','h','o','n']
print(t)
s=''.join(t)     #转换字符串
print(s)

结果:

['p', 'y', 't', 'h', 'o', 'n']
python

5.3元组

元组的表现形式为一组包含在圆括号“()”中、由逗号分隔的元素,元组中元素的个数、类型不受限制。除了使用()构建元组外,还可以使用内置函数tuple()构建元组。

格式如下:

tuple1=("元素1","元素2",...,"元素n")

示例如下:

#创建元组
tuple1=("15","bsn","15d1","vd5","111")
print(tuple1)
print(tuple1[2])    #使用索引
print(tuple1[0:3])   #使用切片

结果:

('15', 'bsn', '15d1', 'vd5', '111')

('15d1')
('15', 'bsn', '15d1')

当使用圆括号“()”创建元组时,如果元组中只包含一个元素,那么需要在该元素的后面添加逗号,从而保证Python解释器能够识别其为元组类型。

示例如下:

t1 = ('python')
t2 = ('python',)
print(type(t1))
print(type(t2))

结果:

<class 'str'>
<class 'tuple'>

其他序列(列表和字符串)的操作都可用于元组,除了那些会违反不变性的列表运算符。“+”和“*”运算符同样适用于元组。成员操作(in)和for循环同样适用于元组长度(len)、最大(max)和最小(min)同样适用于元组。没有任何的操作能更改元组。例如append、extend、insert、remove、pop、reverse和sort不能用于元组。
然而,当元组中存在列表元素项时,就使用上述如append等方法修改list中的元素,达到间接修改元组元素的目的。

5.5集合

Python的集合(set)本身是可变类型,但Python要求放入集合中的元素必须是不可变类型。大括号“{}”或内置函数set()均可构建集合。

格式如下:

set1={1,2,...,n}    #使用{}构建集合

set2=set({1,2,...,n})    #使用set构建元组

示例如下:

#创建集合
set1={2573,441,23533,222}
print(set1)

结果:

{441, 23533, 2573, 222}

需要注意,使用{}不能创建空集合(不包含元素的{}创建的是字典变量),空集合只能利用set()函数创建。

集合是可变的,集合中的元素可以动态增加删除。Python提供了一些内置方法来操作集合,常见内置方法如下:

 5.6.1创建字典

字典的表现形式为一组包含在大括号“{}”中的键值对,每个键值对为一个字典元素,每个元素通过逗号“,”分隔,每对键值通过“:”分隔,除了使用“{}”创建字典还可以使用内置函数dict创建字典。

格式如下:

d1={'key1':value1,'key2':value2,...,'keyn':valuen}     #使用{}构建集合

d2=dict(a=1234,b=4567)    #使用dict构建元组

注意:key是唯一的,value是可重复的

示例如下:

d1 = {'A': 123, 12: 'python'}
print(d1)
d2 = dict({'A': '123', 'B': '135'})
print(d2)

结果:

{'A': 123, 12: 'python'}
{'A': '123', 'B': '135'}

5.6.2字典的访问

字典的值可通过“”或内置方法get()访问。

示例如下:

#创建字典
d2 = dict({'A': '123', 'B': '135'})
print(d2)
print(d2['A'])    #访问A
print(d2.get('B'))   #访问B

结果:

{'A': '123', 'B': '135'}
123
135

字典涉及的数据分为和元素(键值对),除了直接利用键访问值外,Python还提供了内置方法keys()、values()和items()。

格式如下:

info.keys()   #获取所有键
info.values()   #获取所有值
info.items()   #获取所有元素

示例如下:

info = {'name': 'Jack','age':23,'height':185}
print(info.keys())    #获取所有键
print(info.values())    #获取所有值
print(info.items())    #获取所有元素

结果:

dict_keys(['name', 'age', 'height'])
dict_values(['Jack', 23, 185])
dict_items([('name', 'Jack'), ('age', 23), ('height', 185)])

5.6.3 元素的添加和修改

字典支持通过为指定的键赋值或使用update()方法添加或修改元素,下面分别介绍如何添加和修改字典元素。

格式如下:

通过键添加/修改元素:字典变量[键] = 值

使用update()添加/修改元素:dict.update(key=value)

示例如下:

添加元素

#创建字典
add_dict = {'name': 'Jack','age':23,'height':185}
add_dict['sco'] = 98    #通过键添加
print(add_dict)
add_dict.update(bnt=23)    #使用update方法添加
print(add_dict)

结果:

{'name': 'Jack', 'age': 23, 'height': 185, 'sco': 98}
{'name': 'Jack', 'age': 23, 'height': 185, 'sco': 98, 'bnt': 23}

修改元素

示例如下:

#创建字典
modify_dict = {'stu1': '小明', 'stu2': '小刚', 'stu3': '小兰'}
modify_dict['stu3'] = '刘婷'    #通过键修改
print(modify_dict)
modify_dict.update(stu2='张强')    #使用update方法修改
print(modify_dict)

结果:

{'stu1': '小明', 'stu2': '小刚', 'stu3': '刘婷'}
{'stu1': '小明', 'stu2': '张强', 'stu3': '刘婷'}

5.6.4 字典元素的删除

Python支持通过pop()、popitem()和clear()方法删除字典中的元素。

pop():根据指定键值删除字典中的指定元素

格式如下:

字典变量.pop(键)

示例如下:

#创建字典
modify_dict = {'stu1': '小明', 'stu2': '小刚', 'stu3': '小兰'}
modify_dict.pop('stu1')
print(modify_dict)   # 使用pop删除

结果:

{'stu2': '小刚', 'stu3': '小兰'}

popitem()随机删除字典中的元素

格式如下:

字典变量.popitem(键)

示例如下:

#创建字典
modify_dict = {'stu1': '小明', 'stu2': '小刚', 'stu3': '小兰'}
modify_dict.popitem()
print(modify_dict)   # 使用popitem删除

结果:

{'stu1': '小明', 'stu2': '小刚'}

clear()清空字典中的元素

格式如下:

字典变量.clear(键)

示例如下:

#创建字典
modify_dict = {'stu1': '小明', 'stu2': '小刚', 'stu3': '小兰'}
modify_dict.clear()
print(modify_dict)   # 使用clear删除

结果:

{}

5.7 组合数据类型与运算

Python中针对数字类型的运算符对组合数据类型同样适用,包括+、*、in、not in。

字符串、列表和元组使用“ + ”运算符,会对数据进行拼接

字符串、列表和元组使用“ * ”运算符,会对数据进行整数倍拼接

“in”“not in”运算符称为成员运算符,用于判断某个元素是否属于某个变量

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值