我们假设有一个列表a = [1, 3, 5, 6, 8].
我想在该列表上应用一些转换,我想避免按顺序执行它,所以map(someTransformationFunction, a)通常可以做到这一点,但是如果转换需要了解每个对象的索引呢?
例如,假设每个元素必须乘以其位置.所以列表应该转换为a = [0, 3, 10, 18, 32].
有没有办法做到这一点?
我正在阅读Python文档,以深入了解Python语言并遇到过滤器和地图功能.我之前使用过滤器,但从未映射过,虽然我已经在SO上看到了各种Python问题.
在Python教程中阅读了它们之后,我对两者之间的区别感到困惑.例如,从5.1.3开始.功能编程工具:
>>> def f(x): return x % 2 != 0 and x % 3 != 0
...
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
Run Code Online (Sandbox Code Playgroud)
和
>>> def cube(x): return x*x*x
...
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
Run Code Online (Sandbox Code Playgroud)
这些看起来与我的功能几乎完全相同,所以我进入终端以交互方式运行Python并测试了我自己的情况.我用于map上面的第一个和第二个实例,并且对于第一个实例(return x % 2 != 0 and x % 3 != 0)它返回了一个布尔值而不是数字列表.
为什么map有时会返回布尔值,有时会返回实际返回值?
有人可以向我解释一下map和之间的区别filter吗?
我确信在标准库中有这样的东西,但似乎我错了.
我有一堆我想urlopen并行的网址.我想要内置map函数,除了工作由一堆线程并行完成.
是否有一个很好的模块可以做到这一点?
我知道
map(function, arguments)
Run Code Online (Sandbox Code Playgroud)
相当于
for argument in arguments:
function(argument)
Run Code Online (Sandbox Code Playgroud)
是否可以使用map功能执行以下操作?
for arg, kwargs in arguments:
function(arg, **kwargs)
Run Code Online (Sandbox Code Playgroud) 当在Python编程,我现在避免map,lambda并filter通过使用列表理解,因为它是在执行中更容易阅读和更快.但也reduce可以替换?
例如,对象具有union()在另一个对象上工作的运算符a1.union(a2),并且给出相同类型的第三个对象.
我有一个对象列表:
L = [a1, a2, a3, ...]
Run Code Online (Sandbox Code Playgroud)
如何将所有这些对象的union()与列表推导相对应,相当于:
result = reduce(lambda a, b :a.union(b), L[1:], L[0])
Run Code Online (Sandbox Code Playgroud) Scala中有什么东西,
condition ? first_expression : second_expression;
Run Code Online (Sandbox Code Playgroud)
我可以在scala中使用map函数吗?我希望能够写出这样的东西:
val statuses = tweets.map(status => status.isTruncate? //do nothing | status.getText())
Run Code Online (Sandbox Code Playgroud)
如果无法使用内联函数,如何在其中写入条件map?
如何使multiprocessing.pool.map按数字顺序分配进程?
更多信息:
我有一个程序可以处理几千个数据文件,并绘制每个文件的图.我正在使用a multiprocessing.pool.map将每个文件分发到处理器,它运行良好.有时这需要很长时间,在程序运行时查看输出图像会很好.如果地图进程按顺序分发快照,这将会容易得多; 相反,对于我刚刚执行的特定运行,分析的前8个快照是: 0, 78, 156, 234, 312, 390, 468, 546.有没有办法让它按数字顺序更紧密地分配它们?
示例:
这是一个包含相同键元素的示例代码,并显示相同的基本结果:
import sys
from multiprocessing import Pool
import time
num_proc = 4; num_calls = 20; sleeper = 0.1
def SomeFunc(arg):
time.sleep(sleeper)
print "%5d" % (arg),
sys.stdout.flush() # otherwise doesn't print properly on single line
proc_pool = Pool(num_proc)
proc_pool.map( SomeFunc, range(num_calls) )
Run Code Online (Sandbox Code Playgroud)
产量:
0 4 2 6 1 5 3 7 8 10 12 14 13 11 9 15 16 18 17 19
Run Code Online (Sandbox Code Playgroud)
来自@Hayden:使用'chunksize'参数, …
在Python 2中,一个常见的(旧的,遗留的)习惯用于使用map如下形式连接不均匀长度的迭代器map(None,iter,iter,...):
>>> map(None,xrange(5),xrange(10,12))
[(0, 10), (1, 11), (2, None), (3, None), (4, None)]
Run Code Online (Sandbox Code Playgroud)
在Python 2中,它被扩展,以便最长的迭代器是返回列表的长度,如果一个比另一个短,则用它填充None.
在Python 3中,这是不同的.首先,你不能None用作位置1中可调用的参数:
>>> list(map(None, range(5),range(10,12)))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable
Run Code Online (Sandbox Code Playgroud)
好的 - 我可以解决这个问题:
>>> def f(*x): return x
...
>>> list(map(f, *(range(5),range(10,12))))
[(0, 10), (1, 11)]
Run Code Online (Sandbox Code Playgroud)
但现在,我有一个不同的问题:map返回最短迭代器的长度 - 不再填充None.
当我将Python 2代码移植到Python 3时,这不是一个非常罕见的习惯用法,我还没有找到一个简单易用的解决方案.
不幸的是,2to3的工具,不挑这件事-帮倒忙提示:
-map(None,xrange(5),xrange(10,18)) …Run Code Online (Sandbox Code Playgroud) 为什么以下代码不打印任何内容:
#!/usr/bin/python3
class test:
def do_someting(self,value):
print(value)
return value
def fun1(self):
map(self.do_someting,range(10))
if __name__=="__main__":
t = test()
t.fun1()
Run Code Online (Sandbox Code Playgroud)
我正在Python 3中执行上面的代码.我想我错过了一些非常基本但却无法解决的问题.
对于正常功能,map效果很好:
def increment(n):
return n+1
l = [1, 2, 3, 4, 5]
l = map(increment, l)
print l
>>> [2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
但是,如果它print被放入map函数内:
l = [1, 2, 3, 4, 5]
l = map(print, l)
print l
Run Code Online (Sandbox Code Playgroud)
python会抱怨:
l = map(print, l)
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
有什么print特别的?不print(x)也是一个有效的函数调用?上面的代码在python 2.7下测试.
map-function ×10
python ×9
python-2.7 ×2
python-3.x ×2
apache-spark ×1
list ×1
reduce ×1
scala ×1