以下のコードは、一度に 1 つのリストにのみアクセスし、ループごとに 1 つの要素を先読みします。
from itertools import izip_longest
alist = ['foo','bar','duh']
blist = ['ofo','ardavak','dot','dotdat']
for i, plus1 in izip_longest(alist, alist[1:], fillvalue=None):
iplus1 = i + plus1 if plus1 is not None else ""
for j, plus1 in izip_longest(blist, blist[1:], fillvalue=None):
jplus1 = j + plus1 if plus1 is not None else ""
2 つのリストのループごとに 1 つの要素を同時に先読みするにはどうすればよいですか? 何かのようなもの:
for (i,plus1),(j,plus1) in izip(izip_longest(alist, alist[1:], fillvalue=None), izip_longest(blist, blist[1:], fillvalue=None)):
print i,j
print i,j+plus1
print i+plus1,j
print i+plus1,j+plus1
目的の出力は次のようになります。
foo ofo
foo ofoardavak
foobar ofo
foobar ofoardvak
bar ardavak
bar ardavakdot
barduh ardavak
barduh ardavakdot
duh dot
duh dotdotdat
dot
dotdotdat
dotdat
dotdat