Given a Python tuple

```
products = (a, b, c, d, e, f, g)

```

I seek to generate a new tuple/list from 'products', but according to specific patterns:

1. all possible chronological combinations to make pairs e.g. ab, ac (& so on...) af, ag, bc, and so on
2. similar to #1, but making sets of three and making sure the increment change to either side of the 'middle' product is equal e.g. abc, bcd (& so on...) *and* ace, bdf, ceg
3. sets of four, again making sure that the increment change is equal to either side (and between) middle products e.g. abcd, bcde (& so on…) *and* aceg

From asking around and reading on Python's site, the itertools.combinations() function seemed a step in the right direction. But given the specific patterns being sought for creation, seems more than just that function in its standard usage form is needed. Any suggestions?

P.S. the *average* actual tuple is several times longer than the example above (I'll have about 40 tuples total), and some 'products' within each will expire/drop out and new ones added every few weeks, so manually entering the combinations into new tuples isn't in keeping with the aims of automation.