Im Beitrag von Viel ist das ``del`` unsinnig. Das löscht den Namen `spalte` der gleich darauf beim nächsten Schleifendurchlauf wieder definiert wird. Die Liste löscht das nicht, was auch fatal wäre, denn die wird ja noch als Element der umgebenden `feld`-Liste verwendet. Und die ``while``-Schleifen sind ja eigentlich ``for``-Schleifen:
Code: Alles auswählen
#!/usr/bin/env python3
import random
from pprint import pprint
def main():
y = 10
x = 10
feld = []
for _ in range(y):
spalte = []
for _ in range(x):
spalte.append(random.randint(1, 5))
feld.append(spalte)
pprint(feld)
if __name__ == "__main__":
main()
Beim Beitrag von mawe frage ich mich warum die einzelne Zeile (oder Spalte) mit einer „list comprehension“ erstellt wird, aber die das gesamte Feld mit einer Schleife und `append()`, statt das auch mit einer „list comprehension“ zu machen:
Code: Alles auswählen
#!/usr/bin/env python3
import random
from pprint import pprint
def main():
x = 10
y = 10
feld = [[random.randint(1, 5) for _ in range(y)] for _ in range(x)]
pprint(feld)
if __name__ == "__main__":
main()
Das von CM vorgeschlagene `numarray`-Modul ist das letzte mal 2006 im Package-Index aktualisiert worden. Ich denke die Leute sind mittlerweile auf Numpy umgestiegen:
Code: Alles auswählen
#!/usr/bin/env python3
from numpy.random import default_rng
def main():
x = 10
y = 10
feld = default_rng().integers(1, 5, (x, y))
print(feld)
if __name__ == "__main__":
main()