Python 如何用map()函数替换此代码?
我认为最后两行可以用map()函数替换,但我不知道如何替换Python 如何用map()函数替换此代码?,python,python-2.7,Python,Python 2.7,我认为最后两行可以用map()函数替换,但我不知道如何替换 感谢您的帮助。使用lambda表达式,不会为您节省很多打字时间,也不会在任何方面提供帮助 thlst = [threading.Thread(target=i.report) for i in users] ; for th in thlst : th.start(); 虽然这是毫无意义的,你所拥有的也没有错 您甚至不需要map() 列出理解力,但不要指定。基本上,同样的事情map()也可以 map(lambda x:
感谢您的帮助。使用lambda表达式,不会为您节省很多打字时间,也不会在任何方面提供帮助
thlst = [threading.Thread(target=i.report) for i in users] ;
for th in thlst :
th.start();
虽然这是毫无意义的,你所拥有的也没有错 您甚至不需要
map()
列出理解力,但不要指定。基本上,同样的事情map()
也可以
map(lambda x: x.start(),thlst)
如果你真的不需要thlst
,那就马上开始吧
[th.start() for th in thlst]
同样地
[threading.Thread(target=i.report).start() for i in users]
虽然你可以,但你不应该。Map是一种函数构造,当您计算基于参数的列表时,应该使用它,该参数也是一个列表。在这里,您忽略了start的返回值并依赖于副作用,因此这不适用。在Python中,您不需要这些分号。您仍然需要使用map对象来实际应用该方法,因此实际上只有2行变为1加上生成要丢弃的值。如果你需要<代码> THLST ,那么我将只使用for循环。我会考虑这个糟糕的形式——
map
的工作方式。Python的map
是一个函数,而不是列表方法map
不是list
s上的方法,它是一个内置函数。2.这实际上并不需要lambda
,因为对象的类型是已知的,所以您可以将unbound方法作为transform函数传递,并避免额外的方法调用层:map(threading.Thread.start,thlst)
3。正如在对该问题的评论中所指出的,这是对map
的滥用,确实不应该受到鼓励<代码>映射用于功能编程,基于输入和输出,无副作用。使用它来产生副作用是有欺骗性的(并且会无缘无故地创建一个临时的垃圾结果列表)。哎哟,对不起,太多JS了,在Python中重写它。如果不使用它,为什么要创建一个列表?对于我的用户:@JorgePlaza这个问题似乎是在问问题中的替代品,不是吗?@cricket_007我明白你的意思,我只是认为建议建立列表不是一个好的替代品
map(lambda u: threading.Thread(target=u.report).start(), users)