gpt4 book ai didi

python - 如何在使用 izip_longest 向前查看的同时一次访问 2 个列表? -Python

转载 作者:行者123 更新时间:2023-12-01 05:51:21 36 4
gpt4 key购买 nike

下面的代码一次仅访问一个列表,并且每次循环向前查找 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

最佳答案

也许是这样的:

from itertools import izip_longest

alist = ['foo','bar','duh']
blist = ['ofo','ardavak','dot','dotdat']

combined_list = list(izip_longest(alist, blist, fillvalue=""))

for (i,j),(iplus1,jplus1) in izip_longest(combined_list, combined_list[1:], fillvalue=("", "")):
print i,j
print i,j+jplus1
print i+iplus1,j
print i+iplus1,j+jplus1

但请注意,zip() 只接受 min(len(alist),len(blist)) 元素,即返回的列表的长度被截断为最短参数序列的长度.

关于python - 如何在使用 izip_longest 向前查看的同时一次访问 2 个列表? -Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14209506/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com