Skip to main content
 首页 » 编程设计

python之在一个 lambda 函数中转换两个 for 循环方法

2025年05月04日15bjzhanghao

我已经创建了这个“两个 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))