大爽Python入门公开课教案

点击查看教程总目录

1 什么是容器

先思考这样一个场景:

有五个学生,姓名分别为:

Alan, Bruce, Carlos, David, Emma.

需要给他们都打一遍招呼。

即按照以下格式输出一遍

hello, Alan!
hello, Bruce!
hello, Carlos!
hello, David!
hello, Emma!

如果一个一个print,代码重复度太高,且后续每多一个学生,需要跟着增加一行print。

20个学生就需要20行代码,100个学生就需要100行代码,

这样的代码是很糟糕的。

回顾第一章,我们可能能想到使用循环。

但是由于每个学生都有自己的名字,这些名字一般是不同的字符串,

所以不能直接使用第一章学到的for i in range(n)循环。

那么我们希望怎样一种循环?

我们希望:

有多少个学生,循环就执行多少次,

同时第几次循环中,我们能知道第几个学生的姓名信息。

实际上,

这会被分成两步去实现,

有一个东西,去存放学生的姓名信息。

使用循环,遍历(依次获取)这个东西里面存放的信息。

这样一种能存放其他变量信息的东西,称为容器。

python里面最常用的三种容器:

  • 列表(list)
  • 元组(tuple)
  • 字典(dict,dictionary)

2 列表list

先回到我们刚才描述的场景,

对这个场景而言,选择列表list做为容器是最好的。

代码如下

# 首先,新建一个存放学生的姓名信息的容器,容器名为names
names = ["Alan", "Bruce", "Carlos", "David", "Emma"] for name in names: # 遍历容器:依次获取学生姓名信息
print("hello, %s!" % name)

# 后面都为注释,

运行代码时,注释是不执行的。

注释主要是用来解释说明代码的用意。

方便别人看懂(也方便自己看懂)

列表基础

  • 列表用[]来表示,内部存放的数据,称为项(item)或者元素(element),不同元素用,分隔。
  • 可以使用for ... in ...来遍历列表里面的元素(依次获取全部元素信息)
  • 列表使用append(item)方法来添加新元素
  • *列表内部的元素可以是不同的类型,但一个列表通常会存放相同类型的数据(不同类型的数据一般会分开存放)。
  • *列表是有序的。
  • *列表的类型为list

使用示例

>>> names = ["Alan", "Bruce", "Carlos"]
>>> type(names)
<class 'list'>
>>> for name in names:
... print(name)
...
Alan
Bruce
Carlos
>>> names.append("David")
>>> names
['Alan', 'Bruce', 'Carlos', 'David']
>>> for name in names:
... print(name)
...
Alan
Bruce
Carlos
David

3 场景拓展

更近一步,假设这五个学生的数学成绩分别为:

90, 80, 85, 92, 81.

需要按以下格式展示他们的姓名和成绩,

Alan, your's math score is 90.
Bruce, your's math score is 80.
Carlos, your's math score is 85.
David, your's math score is 92.
Emma, your's math score is 81.

这个问题,有多种解决思路。

4 元组tuple

一种思路是,使用元组作为子容器

把每个学生的名字和分数一起放在一个元组里,

看作每个学生的个人信息,再把每个学生的个人信息(名字和分数组成的元组)放到列表里面。

代码如下

info_list = [
("Alan", 90),
("Bruce", 80),
("Carlos", 85),
("David", 92),
("Emma", 81),
] for info in info_list:
name, score = info
print("%s, your's math score is %s." % (name, score))

元组基础

  • 元组用()来表示,内部存放的数据,称为项(item)或者元素(element),不同元素用,分隔。
  • 元组和列表很像,不过元组是不可变对象,创建后不能添加、修改或删除项。

    所以一般定义了一个元组,元组元素的数量就是固定的,

    所以可以直接用相同的固定数量的变量来承接元组中的项。
  • *元组的类型为tuple

使用示例

>>> info = ("Alan", 90)
>>> type(info)
<class 'tuple'>
>>> name, score = info
>>> name
'Alan'
>>> score
90
>>> for item in info:
... print(item)
...
Alan
90

补充说明:一般定义了一个元组,元组元素的数量就是固定的,

所以可以直接用相同的固定数量的变量来承接元组中的项。

其实列表也可以用同等数量的变量来承接列表的所有元素。

但是列表的元素数量是可变的,即数量是不固定的,所以一般不这么做。

一般不用for循环来取元组的值,而是直接用同样个数的变量来取。

5 字典dict

另一种思路是,使用字典作为容器。

那么学生的名字和分数就是一一对应的关系。

代码如下

info_dict = {
'Alan': 90,
'Bruce': 80,
'Carlos': 85,
'David': 92,
'Emma': 81
} for name in info_dict:
score = info_dict[name]
print("%s, your's math score is %s." % (name, score))

补充说明:原本python的字典是无序的(目前很多老教程也是这么说的),

那么这个输出的顺序不能保证一致,可能是乱的。

不过python3.6以后,字典就改成有序的了(遵循先后顺序,也叫插入顺序),

所以这个输出是完全符合的。

字典基础

  • 字典用{}来表示,内部存放键值对,键值对内部用:分隔键与值,即key: value,不同键值对用,分隔。

  • 可以使用for ... in ...来遍历字典里面的键(依次获取全部键)

  • 字典的键的类型,只能为字符串、数字、元组。

  • 字典的键是唯一的,不能重复。

  • 字典的值的类型,可以为任何类型。

  • 字典的键可以是不同的类型,值也可以是不同的类型,但通常,一个字典的键会使用相同类型,值也使用相同类型。

  • 字典通过dict[key]来取值,dict[key]=value赋值(如果key已存在就是修改值)。

使用示例

>>> info_dict = {
... 'Alan': 90,
... 'Bruce': 80
... }
>>> type(info_dict)
<class 'dict'>
>>> info_dict['Alan']
90
>>> for key in info_dict::
... print(key)
...
Alan
Bruce
>>> for key in info_dict::
... print(info_dict[key])
...
90
80
>>> info_dict['Carlos'] = 85
>>> info_dict
{'Alan': 90, 'Bruce': 80, 'Carlos': 85}
>>> info_dict['Bruce'] = 88
>>> info_dict
{'Alan': 90, 'Bruce': 88, 'Carlos': 85}

6 容器简单比较

上一部分说到过,容器是一种能存放其他变量信息的东西。

实际上,容器存放的是,数据与数据关系

字典中的数据是对应关系。

列表中的数据是先后顺序关系。

元组中的数据是一个固定的小组的关系。

不同的场景,使用的数据的关系不同,

解决对应需求的容器往往也不同。

大爽Python入门教程 2-1 认识容器的更多相关文章

  1. 大爽Python入门教程 3-3 循环:`for`、`while`

    大爽Python入门公开课教案 点击查看教程总目录 for循环 可迭代对象iterable 不同于其他语言. python的for循环只能用于遍历 可迭代对象iterable 的项. 即只支持以下语法 ...

  2. 大爽Python入门教程 3-4 实践例题

    大爽Python入门公开课教案 点击查看教程总目录 1. 求和 使用循环,计算列表所有项的和,并输出这个和. 列表示例 lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, 11 ...

  3. 大爽Python入门教程 3-5 习题

    大爽Python入门公开课教案 点击查看教程总目录 1 求平方和 使用循环,计算列表所有项的平方和,并输出这个和. 列表示例 lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, ...

  4. 大爽Python入门教程 3-6 答案

    大爽Python入门公开课教案 点击查看教程总目录 1 求平方和 使用循环,计算列表所有项的平方和,并输出这个和. 列表示例 lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, ...

  5. 大爽Python入门教程 2-5 *拓展实践,对比与思考

    大爽Python入门公开课教案 点击查看教程总目录 本文偏难. 推荐等第一二三四章上完后,回过来拓展阅读. 基础情景思考 假设有这样一张成绩表 最左边的一列是名字,起名麻烦. 这里直接用ABC...来 ...

  6. 大爽Python入门教程 3-1 布尔值: True, False

    大爽Python入门公开课教案 点击查看教程总目录 1 布尔值介绍 从判断说起 回顾第一章介绍的简单的判断 >>> x = 10 >>> if x > 5: ...

  7. 大爽Python入门教程 3-2 条件判断: if...elif..else

    大爽Python入门公开课教案 点击查看教程总目录 简单回顾if 回顾下第一章的代码 >>> x = 5 >>> if x > 0: ... print(&q ...

  8. 大爽Python入门教程 2-2 序列: 字符串、元组与列表

    大爽Python入门公开课教案 点击查看教程总目录 序列 序列(sequence): 顾名思义,有序的排列. 有序排列的一串数据. 一种容器,容器内成员有序排列. python的字符串str,元组tu ...

  9. 大爽Python入门教程 2-3 字符串,列表,字典

    大爽Python入门公开课教案 点击查看教程总目录 除了通用的序列方法, 列表和字符串还有些自己的专属方法. 后面介绍有些是英中文对照介绍(英文来自官方文档), 便于大家更深入的去理解其意思. 灵活的 ...

  10. 大爽Python入门教程 2-4 练习

    大爽Python入门公开课教案 点击查看教程总目录 方位输出 第一章有一个思考题,方位变换: 小明同学站在平原上,面朝北方,向左转51次之后(每次只转90度), 小明面朝哪里?小明转过了多少圈? (3 ...

随机推荐

  1. WPF实现截图(仿微信截图)

    WPF开发者QQ群: 340500857  | 微信群 -> 进入公众号主页 加入组织 每日一笑 肚子疼,去厕所排便,结果什么都没拉出来.看着自己坐在马桶上痛苦又努力却一无所获的样子,仿佛看到了 ...

  2. 数据库语法整理及WAF绕过方式

    关系型数据库 关系型数据库:指采用了关系模型来组织数据的数据库. 直白的说就是:关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织 当今主流的关系型数据库有:Oracle,M ...

  3. Redis事件机制

    Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件: 文件事件:Redis通过套接字与客户端连接,文件事件是服务器对套接字操作的抽象. 时间事件:Redis服务器中的一些操作需要给定的时间 ...

  4. Java 爬取 51job 数据 WebMagic实现

    Java 爬取 51job 数据 一.项目Maven环境配置 相关依赖 jar 包配置 <parent> <groupId>org.springframework.boot&l ...

  5. 11.5.2 LVS-NAT 实验

    NAT拓扑 lvs-server VIP:10.211.55.99DIP:10.37.129.99 负载均衡器 开启路由功能(VIP桥接,DIP仅主机) rs01 RIP:10.37.129.3 后端 ...

  6. 题解 2020.10.24 考试 T4 模板

    题目传送门 题目大意 有一个 \(n\) 个点组成的树,有 \(m\) 次操作,每次将 \(1\to x\) 的路径上每个点都加入一个颜色为 \(c\) 的小球.但是每个点都有大小限制,即小球个数超过 ...

  7. 洛谷4400 BlueMary的旅行(分层图+最大流)

    qwq 首先,我们观察到题目中提到的每天只能乘坐一次航班的限制,很容易想到建分层图,也就是通过枚举天数,然后每天加入一层新的点. (然而我一开始想的却是erf) 考虑从小到大枚举天数,然后每次新建一层 ...

  8. Frida-RPC调用

    Python Frida RPC 调用示例 JS_CODE var base64EncodeChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrs ...

  9. Github 29K Star的开源对象存储方案——Minio入门宝典

    对象存储不是什么新技术了,但是从来都没有被替代掉.为什么?在这个大数据发展迅速地时代,数据已经不单单是简单的文本数据了,每天有大量的图片,视频数据产生,在短视频火爆的今天,这个数量还在增加.有数据表明 ...

  10. PM技术分享——《构建之法》初步实践

    软件理论 软件=程序+软件工程:软件开发活动(构建管理.源代码管理.软件设计.软件测试.项目管理)相关的内容的完成,才能完成把整个程序转化成为一个可用的软件的过程. 软件企业=软件+商业模式 软件开发 ...