如何调用每个迭代两个列表的zip函数?

时间:2016-07-28 23:18:11

标签: python dictionary iterator

我有两个清单: a=[1,2,3]b=[a,b,c]

我想让这两个中的每个zip调用一个函数,但不要在for循环中以微不足道的方式执行它。有pythonic方式吗?我尝试了map

map(func(i,v) for i,v in zip(a,b))

但它不起作用

3 个答案:

答案 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”,因此不是很明确。