我已经创建了这个“两个 for 循环”方法,假设如果我将一个句子标记为列表 [w1, w2, w3, .., wn] 我想输出以下对(不是双字母组)
for i in range(len(words)):
for j in range(i+1, range(len(words))):
couples = (words[i], words[j])
- w1, w2
- w1, w3
- w1, w4
- ....
- ....
- w2, w3
- w2, w4
- ....
但我想要 lambda 函数格式以便在我的 apache spark 程序中使用。有人可以帮助我吗?
提前致谢
请您参考如下方法:
我将从直接遍历列表开始:
for x in words:
for y in words:
couples = x, y
然而,这给出了完整的笛卡尔积,它与您原来的积不完全相同。所以我们需要第一个循环的索引,而不是第二个循环:
for i, x in enumerate(words):
for y in words[i:]:
couples = x, y
现在我们可以将其转换为生成器表达式(而不是 lambda):
all_couples = ((x, y) for y in words[i:] for i, x in enumerate(words))
