Problem

1 /12


Was ist eine Matrix? Erstellen, Anzeigen

Theory Click to read/hide

Matrix. Einleitung
Es ist sehr häufig, sich mit tabellarischen Daten zu befassen, wenn es um Informationen geht. Heute ' s Programme arbeiten oft mit solchen Daten. Das einfachste Beispiel ist das Schieduling von Spielen auf einem Käfigbrett: Vernetzer, Schach, Schuh, etc.

In der Mathematik werden solche Strukturen Mathematik genannt.
Matrix - ist ein rechteckiger Tisch, der aus Elementen eines Typs besteht (Schienen, Linien usw.).

Solche Daten in Pitton können in Form von zweidimensionalen Listen (zwei) - Listen gespeichert und verarbeitet werden.
Um die Daten in der Tabelle zu verarbeiten, muss der Zustand jeder Zelle erinnert werden. Jede Zelle hat zwei Zahlen: die Zeilennummer und die Spaltennummer.
In der Matrix weist jedes Element zwei Indizes auf: zuerst wird die Zeilennummer angegeben, dann die Spaltennummer. Die Nummerierung von Zeilen und Spalten beginnt bei Null.
Zum Beispiel Element A[1][2] - dieses Element befindet sich in der zweiten Linie und der dritten Spalte.

Auch, wie bei herkömmlichen Massen (Listen), mit den Matrizen zu arbeiten, ist es notwendig, zu lernen, wie sie zu erstellen, injizieren, zu verarbeiten und abzuschirmen.

Errichtung einer Matrix

Option 1. Strenge Aufgabe der Elemente der Matrix
Sind alle Werte der Matrix bekannt, so kann diese wie folgt aufgezeichnet werden (für die obige Tabelle):
arr = [1, 2, 4, 29]
[3, 4, 6, 1]

oder eine Zeile
arr = [[1, 2, 4, 29], [3, 4, 6, 1]

Der erste Weg ist sichtbarer, besser gelesen und verstanden.
Bitte beachten Sie, dass die Werte der Elemente jeder Zeile in quadratischen Klammern liegen.
Option 2. Erinnerung an eine bestimmte Größe Matrix gefüllt mit einigen Anfangswerten (z.B. Nullen)
NON-VERY MOD (so musst du das nicht tun)
N = 3
M = 2
- Ja.
A = [row] * N # eine Masse(n) aus N Zeile erstellen

So wird es wegen Pythons Eigenschaften falsch funktionieren.
Wenn es eine Notwendigkeit gibt, eine Auszeichnung zu machen A[0][0] = 1das Ergebnis ist, dass alle Elemente der Nullspalte gleich 1 sein werden
Matrixausgang А auf dem Bildschirm von Team print(A) (Sieh es selbst an):
[[1, 0], [1, 0], [1, 0]]

Es ist passiert, weil Matrix ist eine Liste von String-Adressen

Ich meine, den Operator zu machen.
Zeile = [0] * M
Der Compiler erinnert sich an eine einzige Zeile und dann den Operator
A = [row] * N
Erstellt alle Referenzen in A.
Komm schon!
Um die richtige Matrix zu erstellen, ist es notwendig, den Compiler dazu zu zwingen, alle Zeilen im Speicher als verschiedene Objekte zu erstellen. Dies sollte zuerst geschehen, indem eine leere Liste erstellt und dann neue Zeilen im Zyklus mit der Methode hinzugefügt werden append()
Beispiel
N = 3
M = 2
A = [
für i im Bereich(N):
A.Append([0]*M)

Dasselbe kann mit dem Generator geschehen.
N = 3
M = 2
A = [[0]*M für i im Bereich(N) ]


Wiederholen der Matrix mit beliebigen Werten
Sobald die Matrix festgelegt ist, kann sie mit beliebigen Werten gefüllt werden. Da jedes Element zwei Indizes aufweist, sollten die eingeführten Zyklen verwendet werden.
für i im Bereich(N):
für j in range(M):
A[i][j] = ...

Entladung der Matrix auf dem Bildschirm
Option 1. Einfache Weise.

Matrix in einer Zeile

Druck(A)

Weniger: Alle Elemente der Matrix sind in einer Zeile platziert, was es schwierig macht zu verstehen.
Option 2. Tabelle Schlussfolgerung

Zwei Zyklen werden in der Regel verwendet, um die Liste zu bearbeiten und zurückzuziehen. erster Zyklus auf der Zeilennummer, zweiter Zyklus auf den Elementen innerhalb der Zeile.
Um die Matrix scharf auf den Bildschirm zu stellen, indem die Anzahl der Lücken innerhalb einer Zeile geteilt wird, muss ein solches Fragment geschrieben werden:

für i in range(len(A)): # len(A) - gibt die Anzahl der Zeilen in Matrix A zurück
für j in range(len(A[i]): # len(A[i]) - die Anzahl der Elemente in Zeile i zurückgeben
Print(A[i][j, end = '
print() # move to a new line



Gleiche, aber nicht Indexzyklen, sondern Listenwerte (Zyklen) for (Massium)

für Zeile in A: # Wir übernehmen alle Zeilen der Matrix A
für Elem in Reihe: # Wir bewegen alle Elemente in der Zeilenzeile
Print(elem, end = ')
Print()



Eine Zeile kann verwendet werden, um eine Zeile zu entfernenjoin:

für Zeile in A:
print('.join(list(map(str, Zeile)))

Problem

Füllen Sie die binäre Matrix (die nur Null und Einheit ist) in Schachreihenfolge. Die linke obere Ecke hat ein Nullelement.

Eingangsdaten
In der Eingangsleitung werden die Abmessungen der Matrix durch den Spalt aufgezeichnet: Anzahl der LinienNAnzahl der SpaltenM(seufzt)\(1 PER= N, M PER=100 \))

Ausgangsdaten
Das Programm sollte die duale Matrix auf den Linien entfernen.

Beispiele
NeinEingangsdatenAusgangsdaten
15.0 0 0 1 0
1 0 0 0 0 1
0 0 0 1 0
1 0 0 0 0 1