一次迭代几个列表 [英] Iterating over several lists at once

查看:64
本文介绍了一次迭代几个列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我正在编写一个代码,需要在相同的

时间内迭代3个列表,例如:

l1中x1为
:l2中x2为
:l3中x3为


打印用做 ;,x1,x2,x3

我需要做的是遍历所有n元组,其中第一个参数是来自第一个列表的
,第二个列表中的第二个,依此类推...

我想知道是否可以用某种方式更容易地写这个

只使用1 for循环。

我的意思是这样的:


(x1,x2,x3)in(l1,l2,l3):

打印用...做点什么,x1,x2,x3


或者像这样:

$ 1 b1 b为x1 in l1,x2 in l2 ,l3中的x3:

打印用',x1,x2,x3做什么


但是,这段代码显然不起作用.. 。

我很高兴收到有关如何在一个循环中执行此操作的想法并且

初始化最少(如果需要的话)。


提前致谢,

Gal

Hi,
I am writing a code that needs to iterate over 3 lists at the same
time, i.e something like this:

for x1 in l1:
for x2 in l2:
for x3 in l3:
print "do something with", x1, x2, x3

What I need to do is go over all n-tuples where the first argument is
from the first list, the second from the second list, and so on...
I was wondering if one could write this more easily in some manner
using only 1 for loop.
What I mean is something like this:

for (x1,x2,x3) in (l1,l2,l3):
print "do something with", x1, x2, x3

Or maybe like this:

for x1 in l1, x2 in l2, x3 in l3:
print "do something with", x1, x2, x3

However, this code obviously doesn''t work...
I''d be very happy to receive ideas about how to do this in one loop and
with minimal initialization (if at all required).

Thanks in advance,
Gal

推荐答案

" Gal Diskin"写道:
"Gal Diskin" wrote:

我正在编写一个代码,需要在相同的

时间迭代3个列表,例如:

l1中x1的b $ b:
l2中x2的b $ b:
l3中x3的b $ b:

打印做一些事情,x1,x2,x3


我需要做的是遍历所有n元组,其中第一个参数是

来自第一个列表,第二个列表中的第二个,依此类推......


我想知道是否可以用某种方式更容易地写这个

只用1换循环。

我的意思是这样的:


for(x1,x2,x3)in(l1,l2,l3) :

打印用'做什么',x1,x2,x3
I am writing a code that needs to iterate over 3 lists at the same
time, i.e something like this:

for x1 in l1:
for x2 in l2:
for x3 in l3:
print "do something with", x1, x2, x3

What I need to do is go over all n-tuples where the first argument is
from the first list, the second from the second list, and so on...

I was wondering if one could write this more easily in some manner
using only 1 for loop.
What I mean is something like this:

for (x1,x2,x3) in (l1,l2,l3):
print "do something with", x1, x2, x3



怎么样


为x1,x2,x3为func(l1,l2,l3):

打印x1,x2,x3


其中func定义为,比如说,


def func(l1,l2,l3):

return((x1, x2,x3)for x1 in l1 for x2 in l2 for x3 in l3)


或者如果你愿意的话


def helper(l1, l2,l3):
l1中x1的b $ b:
l2中x2的b $ b:
l3中x3的


收益率x1,x2,x3

< / F>

how about

for x1, x2, x3 in func(l1, l2, l3):
print x1, x2, x3

where func is defined as, say,

def func(l1, l2, l3):
return ((x1, x2, x3) for x1 in l1 for x2 in l2 for x3 in l3)

or if you prefer

def helper(l1, l2, l3):
for x1 in l1:
for x2 in l2:
for x3 in l3:
yield x1, x2, x3

</F>


Gal Diskin写道:
Gal Diskin wrote:



我正在编写一个代码,需要在相同的

时间迭代3个列表,即类似这样的事情:

l1中x1的b $ b:
l2中x2的b $ b:
l3中x3的


打印用做某事,x1,x2,x3
Hi,
I am writing a code that needs to iterate over 3 lists at the same
time, i.e something like this:

for x1 in l1:
for x2 in l2:
for x3 in l3:
print "do something with", x1, x2, x3



这有什么问题?


[...]

What''s wrong with this?

[...]


我很高兴收到有关如何在一个循环中执行此操作的想法和
$ b初始化最少的$ b(如果需要的话)。
I''d be very happy to receive ideas about how to do this in one loop and
with minimal initialization (if at all required).



def cartesian_product(l1,l2,l3):
我在l1的


for j in l2:

为l in l3:

yield(i,j,k)


for(i,j,k )在cartesian_product(l1,l2,l3):

打印用做某事,我,j,k


-

Roberto Bonvallet

def cartesian_product(l1, l2, l3):
for i in l1:
for j in l2:
for k in l3:
yield (i, j, k)

for (i, j, k) in cartesian_product(l1, l2, l3):
print "do something with", i, j, k

--
Roberto Bonvallet


" Gal Diskin" < ga ******** @ gmail.comwrites:
"Gal Diskin" <ga********@gmail.comwrites:

我正在编写一个需要迭代3个列表的代码

时间,即这样的事情:

l1中x1的b $ b:
l2中x2的b $ b:

对于l3中的x3:

打印用做某事,x1,x2,x3
I am writing a code that needs to iterate over 3 lists at the same
time, i.e something like this:

for x1 in l1:
for x2 in l2:
for x3 in l3:
print "do something with", x1, x2, x3



这看起来有点笨拙(未经测试):


for x1,x2,x3 in((x1,x2,x3)for x1 in l1 for x2 in l2 for x3 in l3):

打印用...做某事,x1,x2,x3


This does look a little kludgy (untested):

for x1,x2,x3 in ((x1,x2,x3) for x1 in l1 for x2 in l2 for x3 in l3):
print "do something with", x1, x2, x3


这篇关于一次迭代几个列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆