我有两个清单:
a=[1,2,3]
,b=[a,b,c]
我想让这两个中的每个zip
调用一个函数,但不要在for循环中以微不足道的方式执行它。有pythonic方式吗?我尝试了map
:
map(func(i,v) for i,v in zip(a,b))
但它不起作用
答案 0 :(得分:5)
pythonic方式是 for循环:
for i, v in zip(a, b):
func(i, v)
清晰,简洁,易读。什么不喜欢?
答案 1 :(得分:1)
列表理解几乎总是更快或等同于 <div class="row">
<div class="panel panel-primary">
<div class="panel-heading">
<%= f.label :country_id, "From*" %>
</div>
<div class="panel-body">
<%= f.select :country_id, Country.order(:name).collect {|p| [ p.name, p.id ] }, {}, { :class => 'form-control' } %>
</div>
</div>
</div>
。如果您将理解结果附加到列表中(如示例中所示),那么理解也比map
更快:
for loop
答案 2 :(得分:0)
如果函数func
没有返回任何内容,您可以使用:
any(func(i, v) for i,v in zip(a, b))
哪个会返回False
但不会累积结果。
由于any()
被用于副作用,所以很多人不会认为这是“Pythonic”,因此不是很明确。