Er1*_*all 1 python lambda function
我创建了这种“两个循环”方法,假设如果将一个句子标记为列表[w1,w2,w3,..,wn],我想输出以下对(不使用双字)
for i in range(len(words)):
for j in range(i+1, range(len(words))):
couples = (words[i], words[j])
Run Code Online (Sandbox Code Playgroud)
但是我想以lambda函数格式使用是为了在我的Apache Spark程序中使用。有人能帮我吗?
提前致谢
我将从直接遍历列表开始:
for x in words:
for y in words:
couples = x, y
Run Code Online (Sandbox Code Playgroud)
但是,这给出了完整的笛卡尔积,与您原来的笛卡尔积并不完全相同。因此,我们需要第一个循环的索引,但第二个循环则不需要:
for i, x in enumerate(words):
for y in words[i:]:
couples = x, y
Run Code Online (Sandbox Code Playgroud)
现在我们可以将其转换为生成器表达式(而不是lambda):
all_couples = ((x, y) for y in words[i:] for i, x in enumerate(words))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |