Python: Wie kann ich Strings in einer Liste, die wiederum in einer Liste ist, leicht generieren?
Hallo,
ich habe ein Problem. Ich brauche nämlich solch eine Liste:
[["","","",],["","","",],["","","",]]
Wie kann ich die generieren?
So:
feld = [[""]*3]*3
funktioniert es irgendwie nicht.
1 Antwort
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Python
so funktioniert es irgendwie nicht
Klar funktioniert das. Aber du musst bedenken, dass du hier dieselben Listen mehrfach einfügst, was dann zu überraschenden Effekten führen kann.
>>> feld = [[""]*3]*3
>>> feld
[['', '', ''], ['', '', ''], ['', '', '']]
>>> feld[0][0] = "hello"
>>> feld
[['hello', '', ''], ['hello', '', ''], ['hello', '', '']]
>>>
Ein möglicher Ansatz wäre:
>>> feld = [['', '', ''] for _ in range(3)]
>>> feld
[['', '', ''], ['', '', ''], ['', '', '']]
Du kannst die List Comprehensions natürlich auch schachteln.
>>> feld = [['' for _ in range(3)] for _ in range(3)]
>>> feld
[['', '', ''], ['', '', ''], ['', '', '']]