Bestimmtes Element in Matrix ändern

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
CodeIt
User
Beiträge: 36
Registriert: Mittwoch 13. September 2017, 06:10

Hallo,
ich bin Neuling in der Programmierung mit python und so stehe ich vor folgendem Problem:
Und zwar möchte ich eine 8x8 Matrix erzeugen, welche mit 0en vorbelegt ist.
Wenn ich jedoch versuche den Wert einzelner Werte der Matrix zu verändern, dann wird
die ganze Spalte der Matrix verändert.

Matrix = [[[None]]*8]*8
for i in range(0, len(Matrix)):
for j in range(0, len(Matrix)):
Matrix[j] = 0

Wenn ich jetzt z.B. versuche an der Stelle [0][0] den Wert 1 einzufügen mit

Matrix[0][0] = 1

dann wird die ganze erste Spalte der Matrix mit 1en belegt.

Für Hilfe wäre ich sehr dankbar
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@CodeIt: Du erzeugst nur eine Liste mit einem Element None, das Du 8 mal in eine andere Liste steckst, die Du 8 mal in eine dritte Liste einfügst.

Du willst aber 8 Listen mit 8 Nullen füllen:

Code: Alles auswählen

matrix = []
for i in range(8):
    matrix.append([0]*8)
oder kurz:

Code: Alles auswählen

matrix = [[0] * 8 for i in range(8)]
CodeIt
User
Beiträge: 36
Registriert: Mittwoch 13. September 2017, 06:10

super super, danke danke
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

wenn du später auch damit Rechnen willst, dann empfiehlt sich unter Python der Einsatz von Numpy.

Da erzeugst du einen mit nullen vorbelegen 8x8 Array so:

[codebox=pycon file=Unbenannt.txt]>>> import numpy as np
>>> a = np.zeros([8,8], dtype=int)
>>> a
array([[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0]])
>>>
[/code]
Gruß, noisefloor
Antworten