Shortest code to generate a full mesh of elements I am trying to find the shortest code that generates a full mesh of the elements fed into it in graphviz format
e.g. the full mesh of [0, 1, 2] is:


2 -&gt; 0
2 -&gt; 1
1 -&gt; 0


I have the code below and I think there might be a way to combine the if and for loops, and avoid needing to directly create the empty string

def graph(l):
    if not l:
        return ""
    i = l.pop()
    out = ""
    for z in l:
        out += "  {}-&gt;{}\n".format(i, z)
    return out + graph(l)
print graph(range(3))
If I get it correctly, the shortest way that I can think of is by using itertools.combinations. Basically, you want all unique combinations, so:

from itertools import combinations

def mesh(L):
    return ["-&gt;".join(map(str, comb)) for comb in combinations(L, 2)]


Which will return:

['1-&gt;2', '1-&gt;3', '2-&gt;3']


For: mesh([1, 2, 3])

If you then want to print them as above, just:

for x in mesh([1, 2, 3]):
    print(x)