Python itertools.combinations: how to get indexes of combo numbers

The result created by Python itertools.combinations () is a combination of numbers. For example:

a = [7, 5, 5, 4] b = list(itertools.combinations(a, 2)) # b = [(7, 5), (7, 5), (7, 4), (5, 5), (5, 4), (5, 4)] 

But I would also like to get indices for combinations like:

 index = [(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)] 

How can i do this?

+8
python itertools
source share
1 answer

You can use the enumeration:

 >>> a = [7, 5, 5, 4] >>> list(itertools.combinations(enumerate(a), 2)) [((0, 7), (1, 5)), ((0, 7), (2, 5)), ((0, 7), (3, 4)), ((1, 5), (2, 5)), ((1, 5), (3, 4)), ((2, 5), (3, 4))] >>> b = list((i,j) for ((i,_),(j,_)) in itertools.combinations(enumerate(a), 2)) >>> b [(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)] 
+8
source share

All Articles