目录

  • 1 面向计算的基础知识
    • 1.1 计算机发展史
    • 1.2 计算机运算基础
    • 1.3 问题求解
    • 1.4 计算环境
    • 1.5 教学课件
  • 2 面向数据的基础知识
    • 2.1 数据与数据采集
    • 2.2 数据存储与整合
    • 2.3 数据分析
    • 2.4 数据可视化
    • 2.5 教学课件
  • 3 面向网络的基础知识
    • 3.1 计算机网络
    • 3.2 Internet与TCP/IP协议
    • 3.3 网络安全及管理
    • 3.4 教学课件
  • 4 数字化时代
    • 4.1 大数据
    • 4.2 云计算
    • 4.3 物联网
    • 4.4 移动互联网
    • 4.5 人工智能
    • 4.6 教学课件
  • 5 Python语言基础
    • 5.1 本章导学
    • 5.2 Python概述
    • 5.3 人机交互
    • 5.4 对象与变量
    • 5.5 编码与命名规范
    • 5.6 注释
    • 5.7 数值类型
    • 5.8 数值类型转换
    • 5.9 数值运算
    • 5.10 常用数学运算函数
    • 5.11 Math模块及其应用
    • 5.12 实践指导
      • 5.12.1 日期格式化输出
      • 5.12.2 欢迎入学
      • 5.12.3 整数四则运算
      • 5.12.4 计算弓形的面积
      • 5.12.5 地球数据计算
      • 5.12.6 学费计算
    • 5.13 编程训练
    • 5.14 项目实训
      • 5.14.1 计算矩形面积
      • 5.14.2 一元二次方程求解
      • 5.14.3 换披萨
  • 6 Python流程控制
    • 6.1 本章导学
    • 6.2 流程控制
    • 6.3 常用运算
      • 6.3.1 真值测试
      • 6.3.2 比较运算
      • 6.3.3 成员运算
      • 6.3.4 布尔运算
      • 6.3.5 身份运算
    • 6.4 循环结构
      • 6.4.1 Range
      • 6.4.2 for 循环
        • 6.4.2.1 for循环(上)
        • 6.4.2.2 for循环实例
        • 6.4.2.3 for循环(下)
      • 6.4.3 while循环
    • 6.5 分支结构
    • 6.6 流程跳转
    • 6.7 else子句
    • 6.8 异常处理
    • 6.9 实践指导
      • 6.9.1 兔子繁殖问题
      • 6.9.2 九九乘法表
      • 6.9.3 百钱百鸡
      • 6.9.4 计算圆周率
      • 6.9.5 百分制转五分制
      • 6.9.6 输出与3无关的数
      • 6.9.7 自身以外的最大因数
      • 6.9.8 判断素数
      • 6.9.9 百钱百鸡进阶
      • 6.9.10 最小公倍数
      • 6.9.11 最大素数
      • 6.9.12 四则运算
      • 6.9.13 正整数A+B
    • 6.10 编程训练
    • 6.11 项目实训
      • 6.11.1 古代数学问题
      • 6.11.2 个人所得税计算器
      • 6.11.3 计算圆周率
  • 7 Python数据结构
    • 7.1 本章导学
    • 7.2 元组
    • 7.3 列表
      • 7.3.1 列表的创建
      • 7.3.2 列表的更新
      • 7.3.3 列表元素的删除
      • 7.3.4 列表排序
      • 7.3.5 列表赋值与复制
      • 7.3.6 列表推导式
      • 7.3.7 列表常用内置函数
      • 7.3.8 列表嵌套及排序
    • 7.4 集合类型
      • 7.4.1 集合创建
      • 7.4.2 集合操作
      • 7.4.3 集合运算
    • 7.5 映射类型
      • 7.5.1 字典的创建
      • 7.5.2 获取字典数据
      • 7.5.3 修改字典值
      • 7.5.4 字典排序
    • 7.6 实践指导
      • 7.6.1 成绩统计分析
      • 7.6.2 二维列表的排序
      • 7.6.3 自幂数
      • 7.6.4 蒙特卡洛模拟圆周率
      • 7.6.5 奇特的四位数
      • 7.6.6 特殊的生日
      • 7.6.7 二进制IP转十进制
      • 7.6.8 手机销售分析
      • 7.6.9 通讯录的查询与更新
      • 7.6.10 查询首都
      • 7.6.11 词频统计
    • 7.7 项目实训
      • 7.7.1 分配学号
      • 7.7.2 葡萄酒评论分析报告
      • 7.7.3 模拟生成身份信息并查验身份
      • 7.7.4 大学排行榜分析
      • 7.7.5 简易英汉字典
      • 7.7.6 股票分析
  • 8 模块及综合应用
    • 8.1 本章导学
    • 8.2 函数定义、调用与返回值
    • 8.3 参数传递
    • 8.4 变量作用域
    • 8.5 匿名函数
    • 8.6 递归函数
    • 8.7 实践指导
      • 8.7.1 阶乘函数定义
      • 8.7.2 素数判定函数
      • 8.7.3 幂函数的定义
      • 8.7.4 简单计算器
      • 8.7.5 回文素数
    • 8.8 编程训练
    • 8.9 项目实训
      • 8.9.1 来自计算机的问候
      • 8.9.2 自定义数学函数模块
      • 8.9.3 神奇的素数
本章导学
  • 1 重要知识点
  • 2 教案
  • 3 PPT


第三章 Python数据结构

Python中应用最广泛的数据类型是序列,包括元组(tuple)、列表(list)、Range以及文本序列(字符串),其中列表属于可变数据类型,其他几种属于不可变数据类型。

主要学习元组和列表的概念及其应用方法。详细讲授列表的创建、更新、删除、排序的方法,通过实例讲解列表的赋值与复制、列表推导式、列表的嵌套的概念与应用。简单介绍在序列操作中广泛应用的map()zip()enumerate()等内置函数的概念与应用。通过实例讲解利用pandas库读取Excel文件、文本文件和数据库中的数据并将数据转为列表类型,以及利用本章所学知识进行进一步处理的方法。

集合类型和映射类型是Python中内置的两种数据类型,因两者都使用一对大括号“{}”作为数据的界定符,所以放在一起进行讲解。简单介绍了集合的创建和基本操作方法,通过实例讲授了集合在去除重复元素方面的应用和集合运算。详细讲授映射数据类型(字典)的创建、值的获取与修改、内置函数与方法以及排序等知识。通过实例讲授利用字典进行数据的查询和统计的方法。

【本章要点】

●元组的概念与应用

tuple([iterable])
使用一对圆括号来表示空元组: ()
使用一个后缀的逗号来表示单元组: a, 或 (a,)
使用以逗号分隔的多个项: a, b, c or (a, b, c)
使用内置的 tuple(): tuple() 或 tuple(iterable)
请注意决定生成元组的其实是逗号而不是圆括号, 圆括号只是可选的

●列表的定义

list([iterable])

●列表的创建、更新和删除

可以用多种方式构建列表:
使用一对方括号来表示空列表: []
使用方括号,其中的项以逗号分隔: [a], [a, b, c]
使用列表推导式: [x for x in iterable]
使用类型的构造器: list() 或 list(iterable)

●列表的排序

ls.sort(*, key=None, reverse=False)
此方法会对列表进行原地排序,只使用 < 来进行各项间比较
key 指定带有一个参数的函数,用于从每个列表元素中提取比较键
reverse 为一个布尔值。 如果设为 True,则每个列表元素将按反向顺序比较进行排序

sorted(iterable)

●列表推导式

[表达式 for x in list]


●内置函数map()、zip()和enumerate()

enumerate(iterable, start=0)返回一个枚举对象。iterable 必须是一个序列,或 iterator,或其他支持迭代的对象
map(function, iterable, ...)返回一个将 function 应用于 iterable 中每一项并输出其结果的迭代器
zip(*iterables, strict=False)在多个迭代器上并行迭代,从每个迭代器返回一个数据项组成元组


●          集合的定义与创建

class set([iterable])
class frozenset([iterable])
返回一个新的 set 或 frozenset 对象,其元素来自于 iterable。
集合的元素必须为 hashable

集合可用多种方式来创建:
使用花括号内以逗号分隔元素的方式: {'jack', 'sjoerd'}
使用集合推导式: {c for c in 'abracadabra' if c not in 'abc'}
使用类型构造器: set(), set('foobar'), set(['a', 'b', 'foo'])


●          集合的运算与应用

len(s)返回集合 s 中的元素数量(即 s 的基数)。
x in s检测 x 是否为 s 中的成员。
x not in s检测 x 是否非 s 中的成员。
isdisjoint(other)如果集合中没有与 other 共有的元素则返回 True。 当且仅当两个集合的交集为空集合时,两者为不相交集合。
issubset(other)
set <= other检测是否集合中的每个元素都在 other 之中。
set < other检测集合是否为 other 的真子集,即 set <= other and set != other。
issuperset(other)
set >= other检测是否 other 中的每个元素都在集合之中。
set > other检测集合是否为 other 的真超集,即 set >= other and set != other。
union(*others)
set | other | ...返回一个新集合,其中包含来自原集合以及 others 指定的所有集合中的元素。
intersection(*others)
set & other & ...返回一个新集合,其中包含原集合以及 others 指定的所有集合中共有的元素。
difference(*others)
set - other - ...返回一个新集合,其中包含原集合中在 others 指定的其他集合中不存在的元素。
symmetric_difference(other)
set ^ other返回一个新集合,其中的元素或属于原集合或属于 other 指定的其他集合,但不能同时属于两者。
copy()  返回原集合的浅拷贝。


可用于 set 而不能用于不可变的 frozenset 实例的操作:
update(*others)
set |= other | ...更新集合,添加来自 others 中的所有元素。
intersection_update(*others)
set &= other & ...更新集合,只保留其中在所有 others 中也存在的元素。
difference_update(*others)
set -= other | ...更新集合,移除其中也存在于 others 中的元素。
symmetric_difference_update(other)
set ^= other更新集合,只保留存在于集合的一方而非共同存在的元素。
add(elem)将元素 elem 添加到集合中。
remove(elem)从集合中移除元素 elem。 如果 elem 不存在于集合中则会引发 KeyError。
discard(elem)如果元素 elem 存在于集合中则将其移除。
pop()从集合中移除并返回任意一个元素。 如果集合为空则会引发 KeyError。
clear()从集合中移除所有元素。


●          字典的创建与修改

class dict(**kwarg)
class dict(mapping, **kwarg)
class dict(iterable, **kwarg)
返回一个新的字典,基于可选的位置参数和可能为空的关键字参数集来初始化。

字典可用多种方式来创建:
使用花括号内以逗号分隔 键: 值 对的方式: {'jack': 4098, 'sjoerd': 4127} or {4098: 'jack', 4127: 'sjoerd'}
使用字典推导式: {}, {x: x ** 2 for x in range(10)}
使用类型构造器: dict(), dict([('foo', 100), ('bar', 200)]), dict(foo=100, bar=200)


●          字典的操作与方法

list(d)         返回字典 d 中使用的所有键的列表。
len(d)          返回字典 d 中的项数。
d[key]          返回 d 中以 key 为键的项。 如果映射中不存在 key 则会引发 KeyError。
d[key] = value  将 d[key] 设为 value。
del d[key]      将 d[key] 从 d 中移除。 如果映射中不存在 key 则会引发 KeyError。
key in d        如果 d 中存在键 key 则返回 True,否则返回 False。
key not in d    等价于 not key in d。
iter(d)  返回以字典的键为元素的迭代器。 这是 iter(d.keys()) 的快捷方式。
clear()  移除字典中的所有元素。
copy()   返回原字典的浅拷贝。
classmethod fromkeys(iterable[, value])使用来自 iterable 的键创建一个新字典,并将键值设为 value。
get(key[, default])  如果 key 存在于字典中则返回 key 的值,否则返回 default。 如果 default 未给出则默认为 None,因而此方法绝不会引发 KeyError。
items()   返回由字典项 ((键, 值) 对) 组成的一个新视图。 参见 视图对象文档。
keys()    返回由字典键组成的一个新视图。 参见 视图对象文档。
pop(key[, default]) 如果 key 存在于字典中则将其移除并返回其值,否则返回 default。 如果 default 未给出且 key 不存在于字典中,则会引发 KeyError。
popitem()    从字典中移除并返回一个 (键, 值) 对。 键值对会按 LIFO 的顺序被返回。
reversed(d)  返回一个逆序获取字典键的迭代器。 这是 reversed(d.keys()) 的快捷方式。
setdefault(key[, default])  如果字典存在键 key ,返回它的值。如果不存在,插入值为 default 的键 key ,并返回 default 。 default 默认为 None。
update([other]) 使用来自 other 的键/值对更新字典,覆盖原有的键。 返回 None。
values()     返回由字典值组成的一个新视图
d | other    合并 d 和 other 中的键和值来创建一个新的字典,两者必须都是字典。当 d 和 other 有相同键时, other 的值优先。
d |= other   用 other 的键和值更新字典 d ,other 可以是 mapping 或 iterable 的键值对。当 d 和 other 有相同键时, other 的值优先。


字典视图对象
len(dictview)返回字典中的条目数。
iter(dictview)返回字典中的键、值或项(以 (键, 值) 为元素的元组表示)的迭代器。
x in dictview如果 x 是对应字典中存在的键、值或项 则返回 True。
reversed(dictview)返回一个逆序获取字典键、值或项的迭代器。


●          字典的排序

sorted(iterable, *, key=None, reverse=False)

字典无序,可对字典键、值或键值对排序,返回值为列表
字典名或dict.keys()为参数可返回键的排序列表
dict.values()为参数可返回值的排序列表
dict.items()为参数可对列表元素进行排序,默认根据键值排序,key 参数结合lambda 表达式可根据值排序