【发布时间】:2019-03-21 02:48:10
【问题描述】:
我正在尝试在 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)))
感谢任何帮助! 谢谢。
【问题讨论】:
-
您是否在寻找
[f(x, y) for x in A for y in B](其中f代表您想要对x和y执行的任何操作)? -
是的,我想是的。那么我真正需要做的是比较 A 中的每个元素与 B 中的每个元素之间的相似性。如果达到相似性,我将它保存到另一个数组中。不是 100% 熟悉数学表达式,但这就是我在用文字寻找的内容!
-
“如果实现了相似性” - 这对于
nlp(x).similarity(nlp(y)的输出意味着什么? -
我实际上不确定我是否在自己的代码中正确完成了 x/y。虽然经过几次试验,“nlp(x).similarity(nlp(y)”返回一个介于 0 和 1 之间的浮点数(1 相同,0 完全不同)。X 和 Y 是字符串(句子,而不是单词)跨度>
-
在那种情况下,像
import math; result = [z for z in (nlp(x).similarity(nlp(y) for x in A for y in B) if math.isclose(z, 1.)]这样的东西怎么样。
标签: python loops for-loop nested iteration