def triangulations(p):
result = []
n = len(p)
if n == 2:
result.append([])
elif n == 3:
result.append([p])
else:
for k in range(1, n - 1):
for u, v in product(triangulations(p[:k + 1]), triangulations(p[k:])):
result.append(u + [(p[0], p[k], p[-1])] + v)
return result
for i in triangulations([1, 2, 3]):
print(i)
Weitere erklärt:
def triangulations(p):
result = []
n = len(p)
print ("execute triangulations")
if n == 2:
result.append([])
elif n == 3:
result.append([p])
else:
for k in range(1, n - 1):
for u, v in product(triangulations(p[:k + 1]), triangulations(p[k:])):
result.append(u + [(p[0], p[k], p[-1])] + v)
return result
triangulationsResult = triangulations([1, 2, 3])
for i in triangulationsResult:
print(i)
for i in triangulationsResult:
print(i)
def triangulationsYield(p):
n = len(p)
print ("execute triangulationsYield")
if n == 2:
yield []
elif n == 3:
yield [p]
else:
for k in range(1, n - 1):
for u, v in product(triangulations(p[:k + 1]), triangulations(p[k:])):
yield u + [(p[0], p[k], p[-1])] + v
triangulationsResultYield = triangulationsYield(["a", "b", "c"])
for i in triangulationsResultYield:
print(i)
for i in triangulationsResultYield:
print(i)
Ausgang:
execute triangulations
[[1, 2, 3]]
[[1, 2, 3]]
execute triangulationsYield
[['a', 'b', 'c']]
Es hängt davon ab, wie dieser Generator (Triangulation) im Code an anderer Stelle genannt wird. Können Sie diesen Teil des Codes posten? – perigon
Drucken (Liste (Triangulations (Tuple ("Abcde")))) – RamsesXVII
Zunächst sollten Sie sich diese brillante Anwser betrachten, um sicherzustellen, dass Sie Generatoren verstehen: https://stackoverflow.com/questions/231767/what- does-the-Yield-Schlüsselwort-Do-in-Python – maestromusica