给妹子讲python-S01E04容器遍历和列表解析式

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文将讲述容器遍历和列表解析式。

【要点抢先看】

1.遍历容器的基本方法
2.列表解析式和字典解析式的用法
【妹子问】前面三集我们学习了三种基本的容器,现在我有一个疑问,我们如何依次访问容器中的所有元素呢?

好问题,那这一集我们就初步学习如何遍历这些容器。

这个容易,python里也用for语句,但用起来比C语言里的语法更简洁一些,我们看看列表迭代的例子:

for x in [1,2,3]:
    print(x)

1
2
3

字典因为涉及到键和值两个元素,稍微有一些不同,我们举两个常用的方法

第一种方法,通过遍历键来索引对应的值

D = {'a':1, 'c':2, 'b':3}
for k in D:
    print('{}--->{}'.format(k,D[k]))

c--->2
a--->1
b--->3

再说说第二种方法。

用字典的items方法可以返回可迭代对象,通过对这个可迭代对象进行逐次迭代,就能获取其每一个键值对的元组,然后,即可同时取出键和值了。

D = {'a':1, 'c':2, 'b':3}
for k,v in D.items():
    print('{}--->{}'.format(k,v))

c--->2
b--->3
a--->1

【妹子说】python中对于容器的遍历看上去很简洁,那这一集标题中的列表解析式是干什么用的?

列表解析式是python中的一个亮点语法。本质上就是用列表来构建列表,通过对已有列表中的每一项应用一个指定的表达式来构建出一个新的列表。列表解析式的优势是编码简单,运行起来很快。

列表解析式的三个核心要素是:

1.作用于输入序列的运算表达式;

2.对输入序列的循环表达式;

3.对输入序列的过滤条件,其中过滤条件是可选的。

【妹子说】别光说一二三,来举个例子说说

比如我们想要用列表a生成列表b,其中列表b中的每个元素都是a中对应元素的二次方

a = [1,2,3,4,5,6,7,8,9,10]
b = [x**2 for x in a]
print(b)

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

这个例子中,输入序列是a,运算表达式是x**2,循环表达式是for x in a。这个例子没有使用过滤条件,因此就使用了列表a中的所有元素来构造列表b,如果我们只想用列表a中所有能被3整除的元素来构造列表b呢,那就得用上过滤条件了。

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = [x**2 for x in a if x % 3 == 0]
print(b)

[9, 36, 81]

同样,对于字典也有同样的用法。

字典解析式,可以用字典以及列表等这些可以迭代的数据类型,来构造一个新的字典。

先看用字典构造字典

D1 = {'a': 1, 'b': 2, 'c': 3}
D2 = {k: v*2 for (k, v) in D1.items()}
print(D2)

{'b': 4, 'a': 2, 'c': 6}

再举一个用列表构造字典的例子:

D = {c:c*4 for c in ['a', 'b', 'c', 'd']}
print(D)

{'d': 'dddd', 'a': 'aaaa', 'c': 'cccc', 'b': 'bbbb'}

【妹子说】python容器遍历的语法看上去简洁而清爽。解析式呢,我感觉是遍历语法的一种更高级的展现和应用,使用简洁,而且可读性也比较强。这一集在前面几集的基础上,我感觉是一个总结和提升。

原文发布时间为:2018-07-24
本文作者:酱油哥
本文来自云栖社区合作伙伴“ Python爱好者社区”,了解相关信息可以关注“ Python爱好者社区

相关文章
|
19天前
|
存储 缓存 算法
Python中collections模块的deque双端队列:深入解析与应用
在Python的`collections`模块中,`deque`(双端队列)是一个线程安全、快速添加和删除元素的双端队列数据类型。它支持从队列的两端添加和弹出元素,提供了比列表更高的效率,特别是在处理大型数据集时。本文将详细解析`deque`的原理、使用方法以及它在各种场景中的应用。
|
2天前
|
调度 Python
Python多线程、多进程与协程面试题解析
【4月更文挑战第14天】Python并发编程涉及多线程、多进程和协程。面试中,对这些概念的理解和应用是评估候选人的重要标准。本文介绍了它们的基础知识、常见问题和应对策略。多线程在同一进程中并发执行,多进程通过进程间通信实现并发,协程则使用`asyncio`进行轻量级线程控制。面试常遇到的问题包括并发并行混淆、GIL影响多线程性能、进程间通信不当和协程异步IO理解不清。要掌握并发模型,需明确其适用场景,理解GIL、进程间通信和协程调度机制。
18 0
|
2天前
|
API Python
Python模块化编程:面试题深度解析
【4月更文挑战第14天】了解Python模块化编程对于构建大型项目至关重要,它涉及代码组织、复用和维护。本文深入探讨了模块、包、导入机制、命名空间和作用域等基础概念,并列举了面试中常见的模块导入混乱、不适当星号导入等问题,强调了避免循环依赖、合理使用`__init__.py`以及理解模块作用域的重要性。掌握这些知识将有助于在面试中自信应对模块化编程的相关挑战。
17 0
|
3天前
|
程序员 索引 Python
06-python数据容器-set(集合)入门基础操作
06-python数据容器-set(集合)入门基础操作
|
3天前
|
索引 容器
06-python数据容器-list列表定义/list的10个常用操作/列表的遍历/使用列表取出偶数
06-python数据容器-list列表定义/list的10个常用操作/列表的遍历/使用列表取出偶数
|
6天前
|
SQL API 数据库
Python中的SQLAlchemy框架:深度解析与实战应用
【4月更文挑战第13天】在Python的众多ORM(对象关系映射)框架中,SQLAlchemy以其功能强大、灵活性和易扩展性脱颖而出,成为许多开发者首选的数据库操作工具。本文将深入探讨SQLAlchemy的核心概念、功能特点以及实战应用,帮助读者更好地理解和使用这一框架。
|
7天前
|
存储 JSON JavaScript
「Python系列」Python JSON数据解析
在Python中解析JSON数据通常使用`json`模块。`json`模块提供了将JSON格式的数据转换为Python对象(如列表、字典等)以及将Python对象转换为JSON格式的数据的方法。
24 0
|
18天前
|
Kubernetes 网络协议 Docker
Docker 容器的DNS
Docker 容器的DNS
23 1
|
19天前
|
数据采集 数据挖掘 Python
Python中collections模块的Counter计数器:深入解析与应用
在Python的`collections`模块中,`Counter`是一个强大且实用的工具,它主要用于计数可哈希对象。无论是统计单词出现的频率,还是分析数据集中元素的分布情况,`Counter`都能提供快速且直观的结果。本文将深入解析`Counter`计数器的原理、用法以及它在实际应用中的价值。
|
25天前
|
JSON JavaScript 数据格式
【深入探究C++ JSON库】解析JSON元素的层级管理与遍历手段
【深入探究C++ JSON库】解析JSON元素的层级管理与遍历手段
79 2

推荐镜像

更多