每次迭代2个列表/数组中的函数

时间:2019-03-21 02:48:11

标签: python loops for-loop nested iteration

我正在尝试在python中迭代2个以上的列表,并为每次迭代处理一个函数。 假设A = [40,30,25],B = [45,35,25]。 (但是,在我的实际应用中,A和B是句子数组)

我希望我的结果函数做这样的事情:

For A[1] & B[1]:
    print("Sum: ", A[1] + B[1])
For A[1] & B[2]: 
    print("Sum: ", A[1] + B[2])
For A[1] & B[3]:
    print("Sum: ", A[1] + B[3])

For A[2] & B[1]:
    print("Sum: ", A[2] + B[1])
For A[2] & B[2]:
    print("Sum: ", A[2] + B[2])
For A[2] & B[3]:
    print("Sum: ", A[2] + B[3])

For A[3] & B[1]:
    print("Sum: ", A[3] + B[1])
For A[3] & B[2]:
    print("Sum: ", A[3] + B[2])
For A[3] & B[3]:
    print("Sum: ", A[3] + B[2])

我确实知道这本质上是一个嵌套的for循环,但是我似乎无法完全按照我现在想要的方式运行它。通过我自己的研究,似乎我需要使用itertools zip函数来正确处理。

我当前的代码如下:

for x,y in itertools.zip_longest(lst1, lst2, fillvalue=None):
        print("X: ",x, "\tY: ",y, "\nZ: ", nlp(x).similarity(nlp(y)))

感谢您的帮助! 谢谢。

1 个答案:

答案 0 :(得分:1)

不需要使用用户itertools。 @coldpseed的评论是一个很好的简洁答案。将其编写为更扩展的外观如下:

for x in A:
    for y in B:
        print("X: ",x, "\tY: ",y, "\nZ: ", nlp(x).similarity(nlp(y)))

或交替使用索引

for i in range (0, len(A)):
    for j in range (0, len(B)):
        x = A[i]
        y = B[j]
        print("X: ",x, "\tY: ",y, "\nZ: ", nlp(x).similarity(nlp(y)))