Sublisten zu Sublisten hinzufügen

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
Benutzeravatar
Ede1994
User
Beiträge: 72
Registriert: Dienstag 2. Mai 2017, 12:41

Hallo.
Ich möchte eine Subliste, unter bestimmten Umständen, d.h wenn ihre Länge kleiner als 2 ist der vorherigen Subliste anhängen.

Code: Alles auswählen

a = [1,1,1,1]
b = [5]
c = [1,1,1]
d = [1,1,1,1,1]
e = [1,2]
f = [1,1,1,1,1,1]

L = [a,b,c,d,e,f]

print 'List:', L

def short(lists):
  c = 0
  result = []
  prev = lists[c]
  for value in lists:
    if len(value) <= 2:
      result.append(prev + value)
      c =+ 1
  print result

short(L)
Das funktioniert schon mal so wie ich es gerne hätte. Nun möchte ich aber die Sublisten, welche länger als 2 sind, mit hinzufügen, jedoch sollen die 'erweiterten Listen' (die ursprünglichen Sublsiten, welche um eine Subliste erweitert wurde) nicht mehr mit auftauchen. Das Ergebnis sollte also ungefähr lauten:

Code: Alles auswählen

[[1, 1, 1, 1, 5], [1, 1, 1], [1, 1, 1, 1, 1, 2], [1, 1, 1, 1, 1, 1]]
Also Liste a und d sollen nicht mehr mit auftauchen!
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Statt immer einen neuen wert zu bilden, ruf einfach extend auf der letzten Liste auf, statt append auf dem Gesamtergebnis.
Sirius3
User
Beiträge: 18270
Registriert: Sonntag 21. Oktober 2012, 17:20

Was soll denn das `c`? Das wird ja gar nicht benutzt. Und wenn Du die Listen nicht haben willst, dann füge einfach keine neuen hinzu.

Code: Alles auswählen

def short(lists):
    result = []
    for value in lists:
        if len(value) <= 2 and result:
            result[-1] = result[-1] + value
    return result
Eingerückt wird übrigens mit vier Leerzeichen pro Ebene.

@__deets__: da muß man dann aufpassen, dass man nicht die ursprünglichen Listen verändert.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

@Sirius3: wo du recht hast.
Antworten