一文看懂Python列表表达式及高阶函数如lambda, zip, enumerate, map和filter方法。

  • Post author:
  • Post category:python


深入了解和熟练使用python的列表表达式和内置的一些高阶函数如lamda, zip, enumerate, map, filter, reduce, sorted方法是python学习,面试和工作的必备技能。正是它们给了python优秀的特性,从而使python有别于其它编程语言。网上的介绍和教程有很多,但感觉还是比较零散,解读也不够深入,小编决定再次动手写篇总结。如果大家还没读过小编写的一文看懂python系列文章,请先阅读

一文看懂Python面向对象编程(Python学习与新手入门必看)-绝对原创



一文看懂Python对文件和文件夹的操作: 含os, shutil和glob模块。Python学习面试必读。

本文内含很多实例代码,以帮助新手更好理解。


列表表达式[List Comprehension]

顾名思义,这个表达式作用是以一个快捷的方法对列表进行操作或运算,返回新的

列表

。其使用方式为[表达式 for 变量 in 列表]  或者  [表达式 for 变量 in 列表 if 条件]。

一个最简单的列表表达式的例子如下。

>>> list1 = [1, 2, 3, 4]
>>> list2 = [ i*i for i in list1]
>>> list3 = [ i*i for i in list1 if i>2]
>>> print(list2)
[1, 4, 9, 16]
>>> print(list3)
[9, 16]

列表表达式也可以遍历元组生成新的列表(如list5),然而却不能直接生成新的元组。比如list6实际上是个生成器表达式,不属于列表表达式了。对于生成器表达式可以通过使用list6.__next__()方法一次一次取值。

>>> tuple1 = (1, 2, 3, 4)
>>> list5 = [ i*i for i in tuple1 ]
>>> print(list5)
[1, 4, 9, 16]
>>> list6 = ( i*i for i in tuple1 )
>>> print(list6)
<generator object <genexpr> at 0x03559E10>

下面我们来看下3个常考的关于列表表达式应用的例子。

1.统计字符串列表中每个字符串的长度

>>> words = ['abc','defg','I love python', 'Django']
>>> len_list = [ len(word) for word in words ]
>>> print(len_list)
[3, 4, 13, 6]

2. 利于列表表达式求两个列表的交集。

>>> a = [ 3, 5, 6, 8]
>



版权声明:本文为weixin_42134789原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。