您的位置:首页 > 编程语言 > Python开发

Python(8): Lambda,列表解析器,生成器表达式,range函数

2017-02-28 15:43 579 查看
看到这里,我觉得之前的几个文章里面的内容,如果熟悉了就算是入门了。之后的内容,很多都是用到了才需要。

甚至很多内容只是提高效率来用的,完全可以通过基础的东西做出来。

作为一个初学者,知其然就可以了,不必强求所以然。

这个时候,应该去下载别人的一些代码来看看,自己修改,手动做一做是最好的学习。

不过我早就不是初学者了,所以继续往下走走,再去练习。

或者这是强迫症吧。

Lambda:一种简单的匿名函数。C++也有类似的东西。

lambda与filter的配合
>>> a = [1,2,3,4,5,6,7,8,9,0]
>>> b = filter(lambda x: x%2 == 0, a) # 过滤出双数
>>> print(*b)
2 4 6 8 0


lambda与map的配合
>>> c =  map(lambda x: "xxxxx " + str(x) +"\n", a)
>>> print(*c)
xxxxx 1
xxxxx 2
xxxxx 3
xxxxx 4
xxxxx 5
xxxxx 6
xxxxx 7
xxxxx 8
xxxxx 9
xxxxx 0
>>> a = [[1,2,3],[3,4,7],[8897,3,999]]
>>> c = map(lambda list: [list[1],list[0],list[2]], a)
>>> print(*c)
[2, 1, 3] [4, 3, 7] [3, 8897, 999]
lambda只能执行一个简单的表达式,复杂的东西是做不了的

列表解析:返回的是一个列表list,用[]包着

语法:[expr for iter_var in iterable] 或 [expr for iter_var in iterable if cond_expr]
>>> a = [1,2,3,4,5,6,7,8,9,0]
>>> [x for x in a]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> [x for x in a if x % 2 == 0]
[2, 4, 6, 8, 0]


生成器表达式:用()包着

语法:(expr for iter_var in iterable) 或 (expr for iter_var in iterable if cond_expr)

列表解析是比较早的Python版本里就引进的(好像是2.0版本),而生成器表达式则是在2.4中引入的新内容,它和列表解析的语法很像,但是在大 数据量处理时,生成器表达式的优势就体现出来了,因为它的内存使用方式更好,效率更高,它并不创建一个列表,只是返回一个生成器。当然,列表解析并不会被 遗弃。
>>> (i + 1 for i in range(10) if i % 2)
<generator object <genexpr> at 0x011DC5D0>


迭代器range函数
>>> range(1,5) #代表从1到5(不包含5)
[1, 2, 3, 4]
>>> range(1,5,2) #代表从1到5,间隔2(不包含5)
[1, 3]
>>> range(5) #代表从0到5(不包含5)
[0, 1, 2, 3, 4]


getopt模块,从命令行中得到选项

getopt.getopt

getopt.gnu_getopt
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 入门教程 2017