listen in listen generieren?

4 Antworten

liste([])

Was soll das überhaupt werden? Ein Funktionsaufruf? Eine Zuweisung? Was erwartest du von dieser Zeile als Resultat?

Mir ist auch etwas unklar, was du von dem random() erwartest.

Es gibt ein paar verschiedene Ansätze das zu lösen, hier ist einer, der schrittweise wohl am verständlichsten ist:

liste = []
for _ in range(9):
    liste.append([])

Oder auch in zwei Schleifen geschachtelt, wenn das später für deine Programmlogik mit inp und hid nötig wird:

liste = []
for inp in range(3):
    for hid in range(3):
        liste.append([])
>>> [[]]*9
[[], [], [], [], [], [], [], [], []]

Man kann es sich natürlich auch unnötig schwer machen :-D. Wenn Du eine Liste von Listen mit randomisierten Elementen haben willst, das könnte man auch entsprechend leicht formulieren.

jo135  19.07.2023, 07:31
[[]]*9

Da sollte man aber beachten, dass hier dieselbe Subliste n-fach referenziert wird. Wenn ich nachher eine dieser Listen befülle, könnte das vielleicht für Überraschungen sorgen:

>>> l = [[]]*9
>>> l
[[], [], [], [], [], [], [], [], []]
>>> l[2].append("bla")
>>> l
[['bla'], ['bla'], ['bla'], ['bla'], ['bla'], ['bla'], ['bla'], ['bla'], ['bla']]
0
KarlRanseierIII  19.07.2023, 20:50
@jo135

Oh ja, Mist, daran habe ich in der Eile nicht gedacht.

l=[list() for _ in range(9)]

Hat allerdings immernoch den Nachteil, daß die Memberlisten leer sind.

So wären sie wenigstens vorgefüllt:

l=[list( (None for _ in range(3)) ) for _ in range(9)]
0
liste = []
n = 3
for i in range(n):
  liste.append([])
print(liste)

Um deinen gewünschten Output zu bekommen, könntest du dein Programm so schreiben. Variiere n um die Anzahl der Listen innerhalb der Liste festzulegen.

Woher ich das weiß:eigene Erfahrung

Dein gewünschtes output von "liste = [[],[],[],[],[],[],[],[],[]]" kannst du ganz einfach durch folgenden Einzeiler erhalten:

>>> liste = [[]]*9

Inhalt von liste:
[[], [], [], [], [], [], [], [], []]

Was genau du mit dem "random.random()" erreichen willst, ist mir allerdings nicht schlüssig. Solltest du wollen, dass in jedem der Arrays das Resultat von "random.random()" steht, würde das wie folgt aussehen:

>>> liste = [[random.random()] for _ in range(9)]

Inhalt von liste:
[[0.5327452460995278], [0.6762881132723869], [0.975431154355746], [0.9365057372183637], [0.7406252420097803], [0.8891944842178967], [0.4897317174761531], [0.8390284377748476], [0.3967539235247183]]
Woher ich das weiß:eigene Erfahrung