def gen_only_pairs(l):
    if not l:
        yield []
return
for i in range(1, len(l)):
    l[1], l[i] = l[i], l[1]
for v in gen_only_pairs(l[2:]):
    yield [(l[0], l[1])] + v
l[1], l[i] = l[i], l[1]
python — разделить список на пары и уникальные элементы