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

【要点抢先看】

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爱好者社区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值