Seite 1 von 1

Das muss irgendwie einfacher gehen. LC?

Verfasst: Montag 19. Juli 2010, 19:30
von Liffi
Ich hab ein paar Zeilen Code, bei denen ich das Gefuehl habe man koennte es einfacher machen, aber ich finde nicht den richtigen Weg.
Im Prinzip steht ja in beiden Zweigen das gleiche, aber wenn ich xrange von einer groesseren zu einer kleineren Zahl laufen lasse, braucht es ja noch den dritten Parameter. Kann man hier irgendwie sinnvoll mit einer LC arbeiten?

Und: ist es schoener (und effizienter) wenn ich vorher cubes[-2] und cubes[-1] 'raushole' aus der Liste?

Code: Alles auswählen

if len(cubes[-2]) > len(cubes[-1]): 
    for i in xrange(len(cubes[-1]), len(cubes[-2])):
        name = str(i)
        out_cube.copy(cubes[-2][name].name, name)
else:
    for i in xrange(len(cubes[-2]), len(cubes[-1])):
        name = str(i)
        out_cube.copy(cubes[-1][name].name, name)
EDIT:: Code richtig eingerueckt.

Re: Das muss irgendwie einfacher gehen. LC?

Verfasst: Montag 19. Juli 2010, 20:03
von BlackJack
Ungetestet:

Code: Alles auswählen

(len_a, cube_a), (len_b, cube_b) = sorted((len(c), c) for c in cubes[-2:])
for i in xrange(len_a, len_b):
    name = str(i)
    out_cube.copy(cube_b[name].name, name)
LC sind dazu da Listen zu erzeugen, da sehe ich nicht wie eine hier nützlich sein sollte.

Re: Das muss irgendwie einfacher gehen. LC?

Verfasst: Montag 19. Juli 2010, 20:09
von pillmuncher
Ungetestet:

Code: Alles auswählen

a, b = cubes[-2:]
if len(a) > len(b):
    a, b = b, a
for i in xrange(len(a), len(b)):
    name = str(i)
    out_cube.copy(a[name].name, name)

Re: Das muss irgendwie einfacher gehen. LC?

Verfasst: Montag 19. Juli 2010, 20:11
von Liffi
pillmuncher hat geschrieben:Ungetestet:

Code: Alles auswählen

a, b = cubes[-2:]
if len(a) > len(b):
    a, b = b, a
    for i in xrange(len(a), len(b)):
        name = str(i)
        out_cube.copy(a[name].name, name)
Die for Schleife muesste wieder 'ausgerueckt' sein, oder?

EDIT:: @pillmuncher hat sich ja durch dein blitzschnelles Editieren erledigt.

@BlackJack: funktioniert, wirkt schon sauberer