List lacing Cross Product (Lower Strict Triangle mode)

Dear Dynamo Experts,
please share your ideas about how the same result can be achieved in Dynamo.
the similar node we have in dynamo : List.CartesianProduct but it gives me all possible combinations.
What I need is all possible and unique combinations for solid objects(list unique items will not work here). For instance, I would like to get intersections of few solids between each other and the script shouldn’t produce duplicates.
For the picture:
to show the logic graphically
Imagine that I have a list of solids (left column of spheres) and I duplicated first list of solids and placed it to the right column, you can consider it as a reflection in a mirror. So you will see the lines properly (lines represent actions of an intersection inspection). So each sphere (a solid object) will check does it intersect with all rest. I want to highlight that each sphere doesn’t check the intersection with itself what will be a horizontal line.

I don’t have access to a computer with Revit right now—and I’ll have to see what the best way of doing this in pure Dynamo is, but it looks like you might want to use ranges pretty extensively here. If I understand correctly, you’re trying to do something like this:

from the result I can see that the logic is right. With each new step right list of values drops one value accordingly, what prevents duplication.
In a perfect way I need the way within dynamo functionality, since I didn’t start to study Python yet and can not develop your way after