第5章组合数据类型

5.1认识组合数据类型

(1)常用的序列类型有字符串、列表和元组。

(2)序列支持双向索引:正向递增索引和反向递减索引正向递增索引从左向右依次递增,第一个元素的索引为0,第二个元素的索引为1,以此类推;反向递减索引从右向左依次递减,从右数第一个元素的索引为-1,第二个元素的索引为-2,以此类推。

(3)Python集合具备确定性、互异性和无序性三个特性。Python要求放入集合中的元素必须是不可变类型,Python中的整型、浮点型、字符串类型和元组属于不可变类型,列表、字典及集合本身都属于可变的数据类型。

(4)映射类型以键值对的形式存储元素,键值对中的键与值之间存在映射关系。

字典(dict)是Python唯一的内置映射类型:每个键只能对应一个值,不允许同一个键在字典中重复出现。 (字典中的键是不可变类型。)

2.1创建列表

列表的创建方式非常简单,既可以直接使用中括号“[]”创建,也可以使用内置的list()函数快速创建。

list_one = []        # 使用[]创建空列表
li_two = list()     # 使用list()创建空列表

支持通过for…in…语句迭代获取数据的对象就是可迭代对象。使用isinstance()函数可以判断目标是否为可迭代对象,返回True表示为可迭代对象。

from collections.abc import Iterable
ls = [3,4,5]
print(isinstance(ls, Iterable))

2.2访问列表元素

列表中的元素可以通过索引或切片这两种方式进行访问,也可以在循环中依次访问。

list_one = ["Java", "C#", "Python", "PHP"]print(list_one[1])#索引print(list_one[1])#切片for li in li_one:#循环print(li, end=' ')

2.3添加列表元素

向列表中添加元素是非常常见的一种列表操作,Python提供了append()、extend()和insert()这几个方法

list_one = ["Java", "C#", "Python", "PHP"]list_one.append("C++")#append在列表末尾添加元素list_one.extend([["Android", "IOS",])#extend在列表末尾添加另一个序列的所有元素list_one.insert(2,“HTML")#insert按照索引将元素插入列表的指定位置

2.4元素排序

(1)列表的排序是将元素按照某种规定进行排列。列表中常用的排序方法有sort()、reverse()、sorted()。

li_one = [6, 2, 5, 3]list_one.sort() #sort有序的元素会覆盖原来的列表元素,不产生新列表li_two = sorted(li_one) #sorted产生排序后的新列表,排序操作不会对原列表产生影响li_one.reverse() #reverse逆置列表,即把原列表中的元素从右至左依次排列存放

2.5删除列表元素的常用方式有del语句、remove()方法、pop()方法和clear()方法。

li_one = [6, 2, 5, 3, 3]del li_one[0]#del删除列表中指定位置的元素li_one.remove(3)#remove移除列表中匹配到的第一个元素

2.6列表推导式

列表推导式是符合Python语法规则的复合表达式,它用于以简洁的方式根据已有的列表构建满足特定需求的列表。列表推导式的基本格式如下:

[exp for x in list]

5.3元组

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

t1 = () # 使用()构建元组t2 = tuple() # 使用tuple构建元组

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

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

(3)元组支持以索引和切片方式访问元组的元素,也支持在循环中遍历元组

tuple_demo = ('p','y','t', 'h', 'o','n')
tuple_demo[2]#索引
tuple_demo[2:5]#切片
for i in tuple_demo:#元组print(i)

5.5集合

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

s1 = {1}     # 使用{}构建集合s2 = set([1,2])  # 使用set构建元组

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

set_demo1 = {}
set_demo2 = set()
print(type(set_demo1))
print(type(set_demo2))

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

(4)集合也可以利用推导式创建,集合推导式的格式与列表推导式相似,区别在于集合推导式外侧为大括号“{}”,具体如下:

{exp for x in set if cond}

6.1创建字典

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

d1 = {'A': 123, 12: 'python'}    # 使用{}构建集合d2 = dict({'A': '123', 'B': '135'})  # 使用dict构建元组

6.2字典的访问

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

d2 = dict({'A': '123', 'B': '135'})
d2['A']#键'123'
d2.get('B')#get()'135'

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

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

6.3元素的添加和修改

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

#通过键添加元素:字典变量[键] = 值#使用update()添加元素:dict.update(key=value)
add_dict = {'name': 'Jack','age':23,'height':185}
add_dict['sco'] = 98#通过键添加
add_dict.update(sco=98)#使用update方法添加

(2)修改字典元素的本质是通过键获取值,再重新对元素进行赋值。修改元素的操作与添加元素的操作相同。

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

6.4字典元素的删除

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

#pop():根据指定键值删除字典中的指定元素#popitem():随机删除字典中的元素#clear():清空字典中的元素

6.5字典推导式

字典推导式外侧为大括号“{}”,且内部需包含键和值两部分,具体格式如下

{new_key:new_value for key,value in dict.items()}

利用字典推导式可快速交换字典中的键和值,示例如下:

old_dict = {'name': 'Jack','age':23,'height':185}
new_dict = {value:key for key,value in old_dict.items()}
print(new_dict)

5.8组合数据类型与运算

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

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

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

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

5.9第五章总结

认识了Python中的组合数据类型,常用的组合数据类型:列表、元组、集合和字典的创建和使用。

python第五章总结相关推荐

  1. 【python第五章——函数】

    python第五章--函数 第五章--函数 5.1函数概述 5.2 函数进阶 下面部分之后再写 5.3函数习题(一些小例子) 第五章--函数 5.1函数概述 快速入门: #定义函数 def func( ...

  2. python 第五章 字典

    python 第五章 # # !/usr/bin/python # # -*- coding: utf-8 -*- # # @File : 总结.py # # @time : 2019-07-1010 ...

  3. python第五章课后题答案_python程序设计基础(嵩天)第五章课后习题部分答案

    原博文 2019-10-13 13:50 − 第五章p1515.2:实现isodd()函数,参数为整数,如果参数为奇数,返回true,否则返回false.def isodd(s): x=eval(s) ...

  4. 给普通人的Python——第五章(上)

    文章目录 5. 代码重复使用的艺术:函数 5.1 一个例子引入 5.2 定义函数 5.3 使用函数重构代码 请关注公众号:编程之路从0到1 5. 代码重复使用的艺术:函数 编程中的函数和我们数学中的函 ...

  5. python第五章课后作业_python 入门到实践第五章课后练习

    原博文 2020-06-19 11:05 − users = ['admin','alex','eric','crystol','joji']#创建一个列表for i in users:#遍历整个列表 ...

  6. Python 第五章 因子分析

    #相关系数矩阵 import pandas as pd Data=pd.read_excel('农村居民人均可支配收入来源2016.xlsx') X=Data.iloc[:,1:] R=X.corr( ...

  7. Python 第五章 数据预处理

    #缺失值填充 import pandas as pd import numpy as np data=pd.read_excel('missing.xlsx') #数据框data c=np.array ...

  8. Python第五章序列,集合,字典

    一.切片 介绍 1.函数float函数和eval函数的区别: 2. 利用下标"[]"可以从字符串(列表,元组)中截取一个子串 二.浅拷贝和深拷贝 1.浅拷贝 2.深拷贝 3.哈希 ...

  9. python第五章课后编程题答案_Python核心编程-第五章课后习题

    5-1 整形 讲讲 Python 普通整型和长整型的区别 答:在2.7版本基本淡化了区别.真要区分的话,普通整型是32位或者64位,而长整型只与PC内存有关,很大就是了 5-2 运算符 (a) 写一个 ...

最新文章

  1. DEV开发之控件NavBarControl
  2. 剑指Offer——平衡二叉树
  3. Spring Boot+Gradle+ MyBatisPlus3.x搭建企业级的后台分离框架
  4. docker学习系列14 使用haproxy实现mysql集群的负载均衡...
  5. Android 取得 ListView中每一个Item项目的值
  6. VBA IsNull 应用 - 捕获错误并查找未填充的值
  7. winxp一键锁定计算机,WinXP下锁定计算机的3种方法
  8. 环境配置:Qt5.5+VS2013+OpenCv3.1.0+Win7(64bit)
  9. 音乐 美术 劳技 计算机教研组工作总结,美术劳技室工作总结
  10. matlab strel
  11. UI交互设计师在准备简历时应该注意什么?
  12. 数据结构算法题整理3
  13. PHP-基于ipip.net制作的IP查询接口源码
  14. PDA扫描 Geenk scan 的方法列表
  15. android studio怎么创建布局,Android Studio--活动创建简单布局
  16. java 三角形类 Triangle
  17. 几种能让Mac“飞”起来的系统空间清理方法
  18. SQL like子查询
  19. 弘辽科技:淘宝开店后就可以直播吗?淘宝直播技巧是什么?
  20. 用计算机作文教学设计,小学电脑的教案设计

热门文章

  1. mysql docker oom_记一次 K3s MySQL 启动 OOM 排查
  2. 计算机考试word功能,2018年计算机二级MS Office考试内容:Word的功能和使用
  3. 计算机二级考试office资料,2017年国家计算机二级office考试资料
  4. GB9706.1-2020|小议指示灯的颜色和报警
  5. 课件动画做的牛不牛,看你有它没它!
  6. 《太阳照常升起》观后感
  7. 【论文笔记】Radatron: Accurate Detection Using Multi-Resolution Cascaded MIMO Radar
  8. 云从科技上市后首份财报:半年营收3.9亿 同比降14% 净亏3.25亿
  9. 符号表工具addr2line
  10. qcustomplot绘制柱状图