全部学习汇总: GreyZhang/python_basic: My learning notes about python. (github.com)
欢迎路过的YUAN类朋友们,希望我们能够相互交流共同成长。如有错误或者不足希望及时指点指出,不胜感激!以下是我的联系方式:
Email:greyzhang@126.com
微信:grey0612
有时候我想知道Python中是否有相应的方式或者技巧实现多个成员的并行处理,类似于MATLAB中的矩阵运算。在使用MATLAB的时候速度优化上存在很多技巧,比如提前分配好内存或者把循环转换为矩阵等等。程序执行效率上是有非常显著的提升的。在Python中,似乎一直没有看到类似的功能。
MATLAB的矩阵式程序设计方式有时候能够让人更容易看懂代码的意图,让代码更加清晰明了。我在Python中找到了一个类似的内置函数,但是没有去探索研究这个是否能够实现类似子成员并行处理的功能。这个内置的函数就是filter。
Filter函数传入的参数有两个,一个是可迭代的数据对象,另一个是用于处理可迭代对象的函数。返回的对象是符合函数处理筛选条件的元素组成的一个元组或者列表等可迭代数据对象。至于返回什么信息,这个得看传入的参数是什么。
使用演示如下:
>>> L1 = [1,2,3,4,0,0,1,123,'abc','','bin',0.0,' ',0.1]
>>> filter(bool,L1)
[1, 2, 3, 4, 1, 123, 'abc', 'bin', ' ', 0.1]
在用于数据筛选的时候,这个功能应该是很有用的。假如我现在想从一系列的整数数字中筛选出其中的偶数,可以用for循环,当然也可以用这种filter的方式。写以下代码测试:
执行结果如下:
>>> ================================ RESTART ================================
>>>
[2, 4, 4, 6, 8, 4, 34, 76, 232, 98]
代码上简单清晰了很多,得到的结果也已经是一个非常便于处理的一个列表。这样看来,即使这个内置的功能不支持并行处理,我们也有采用这个功能的理由——代码的简单化、清晰化。