Я бы начал с итерации по списку:
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
Теперь мы можем перевести это в выражение генератора (а не лямбда):
all_couples = ((x, y) for y in words[i:] for i, x in enumerate(words))