@__deets__, kann es sein, dass das nicht ganz funktioniert?
Aber die Frage ist ja auch etwas ungenau formuliert.
Für die Zahlenwerte im Beispiel, wäre das mein Beitrag:
Code: Alles auswählen
print([number for limit in range(0, 20 + 1) for number in set((limit, -limit))])
"""
Ausgabe:
[0, 1, -1, 2, -2, 3, -3, 4, -4, -5, 5, -6, 6, -7, 7, 8, -8, 9, -9, 10, -10, 11, -11, 12, -12, -13, 13, -14, 14, -15, 15, 16, -16, 17, -17, 18, -18, 19, -19, 20, -20]
"""
Jetzt könnte man die Aufgabe aber auch so verstehen, dass die Ausgabewerte um einen beliebigen Wert, in immer größeren Schritten abwechselnd wachsen, dann wieder fallen sollen.
Und die Schrittweite kann auch variabel sein:
Code: Alles auswählen
def oscillator(wert, limit, step):
count_up = True
inc = step
while wert <= abs(limit):
yield wert
if count_up:
wert += inc
else:
wert -= inc
count_up = not count_up
inc += step
print(list(oscillator(6, 20, 2)))
"""
Ausgabe:
[6, 8, 4, 10, 2, 12, 0, 14, -2, 16, -4, 18, -6, 20, -8]
"""