【Python 第66课】列表综合

大家假期过得可好?今天来讲讲 Python 里一个我非常喜欢的特性--列表综合(List Comprehension)。所谓列表综合,就是通过一个已有的列表生成一个新的列表。

直接看例子:

假设有一个由数字组成的 list,现在需要把其中的偶数项取出来,组成一个新的 list。一种比较“正常”的方法是:

list_1 = [1, 2, 3, 5, 8, 13, 22]

list_2 = []

for i in list_1:

if i % 2 == 0:

list_2.append(i)

print list_2

输出

[2, 8, 22]

此方法通过循环来遍历列表,对其中的每一个元素进行判断,若模取2的结果为0则添加至新列表中。

使用列表综合实现同样的效果:

list_1 = [1, 2, 3, 5, 8, 13, 22]

list_2 = [i for i in list_1 if i % 2 == 0]

print list_2

输出

[2, 8, 22]

[i for i in list_1] 会把 list_1 中的每一个元素都取出来,构成一个新的列表。

如果需要对其中的元素进行筛选,就在后面加上判断条件 if。所以 [i for i in list_1 if i % 2 == 0] 就是把 list_1 中满足 i % 2 == 0 的元素取出来组成新列表。

进一步的,在构建新列表时,还可以对于取出的元素做操作。比如,对于原列表中的偶数项,取出后要除以2,则可以通过 [i / 2 for i in list_1 if i % 2 == 0] 来实现。输出为 [1, 4, 11]。

在实际开发中,适当地使用列表综合可以让代码更加简洁、易读,降低出错的可能。

留一道作业:

用一行 Python 代码实现:把1到100的整数里,能被2、3、5整除的数取出,以分号(;)分隔的形式输出。

原文发布于微信公众号 - Crossin的编程教室(crossincode)

原文发表时间:2014-05-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据结构与算法

BZOJ3585: mex(主席树)

Description   有一个长度为n的数组{a1,a2,...,an}。m次询问,每次询问一个区间内最小没有出现过的自然数。 Input   第一行n,m...

43190
来自专栏Phoenix的Android之旅

动态代理-进阶高级开发必学技能

关于代理模式的话题有很多, 在开发中经常用到的应该是静态代理模式,能很好的去耦合。 动态代理是代理模式的另外一种实现。

9330
来自专栏我的技术专栏

Java锁机制(一)synchronized

18340
来自专栏一枝花算不算浪漫

[Java面试二]Java基础知识精华部分.

41890
来自专栏java初学

java中 i = i++和 j = i++ 的区别

407100
来自专栏技术之路

实例化和具体化详解

primer Plus在解释具体化和实例化看的有点乱,分解出来备忘 在代码中包含函数模板本身并不会生成函数定义,它只是用于生成函数定义的方案 编译器使用模板为我...

21350
来自专栏MelonTeam专栏

Fork/Join 框架

1. 简介 1.1 什么是Fork/Join框架 Java 5 引入了 Executor 和 ExecutorService 接口,使得 Java在并发支持...

22260
来自专栏前端侠2.0

HTMLDocument和XMLDocument 的children

document.children  或者 DOM元素的children都是可以访问的,它返回是该节点下的所有Element节点。 它们同样还有一个childN...

25110
来自专栏九彩拼盘的叨叨叨

JS模式 之通用模式(译)

原文 http://shichuan.github.io/javascript-patterns/

11230
来自专栏用户2442861的专栏

static在C和C++中的用法和区别

http://blog.csdn.net/skyereeee/article/details/8000512

29410

扫码关注云+社区

领取腾讯云代金券