Das muss irgendwie einfacher gehen. LC?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Liffi
User
Beiträge: 153
Registriert: Montag 1. Januar 2007, 17:23

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.
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.
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

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)
In specifications, Murphy's Law supersedes Ohm's.
Liffi
User
Beiträge: 153
Registriert: Montag 1. Januar 2007, 17:23

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
Antworten