2 Arrays vergleichen

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
Ing2008
User
Beiträge: 1
Registriert: Mittwoch 9. November 2011, 15:22

Hallo,

Ich möchte 2 Arrays mit evtl. unterschiedlicher Länge mit je 2 Spalten vergleichen.
Es geht nur um den Vergleich der 2ten Spalte die einen String enthält.

Die 2 Arrays habe ich jeweils aus einer .csv Datei eingelesen. Das funktioniert so weit.

zum testen sind die Anzahl der Zeilen gleich (5).

So funktioniert es nicht, da wird nur jede Zeile zeichenweise durchlaufen.
Spalte 1 ist die zu vergleichende Spalte:

Code: Alles auswählen

    for i in range(0, 5):
        print str(i) + " : " + line_values1[1][i] + "==" + line_values2[1][i]
        if line_values1[1][i] == line_values2[1][i]:
          lines_passed += 1
        else:
          lines_failed += 1
Wie kann ich in der for-schleife jede Zeile direkt vergleichen, und nicht zeichenweise?

Die arrays können unterschiedliche Anzahl von Zeilen haben, wie fang ich das am besten ab?

Danke für Eure Hilfe!
BlackJack

@Ing2008: So wie es da steht vergleichst Du die Spalten der zweiten Zeilen miteinander. Der erste Index ist die Zeile, denn die Liste (Arrays sind in Python in der Regel etwas anderes) enthält ja Listen, die jeweils die Zeilen repräsentieren. Die Formulierung, dass jede Zeile zeichenweise durchlaufen wird, passt da also auch nicht.

Ausserdem fallen zwei „unpythonische“ Vorgehensweisen bei dem Quelltext auf:

1. ``for index in range(obj):`` um dann `index` dazu zu verwenden auf ``obj`` ist in Python in 99,9% der Fälle eine unnötige Indirektion. Man kann direkt über die Elemente von Sequenzen iterieren. Wenn man wie in diesem Falle paarweise Elemente von zwei iterierbaren Objekten benötigt, gibt es `zip()` beziehunsweise `itertools.izip()`.

2. `str()` und ``+`` um sich Zeichenketten zusammen zu basteln. Das sieht so verdammt nach BASIC aus. ;-) In Python verwendet man eher Zeichenkettenformatierung mittels ``%``-Operator oder `format()`-Methode auf Zeichenketten.

Bei unterschiedlicher Anzahl von Zeilen ist die Frage wie das behandelt werden soll. Schau Dir am besten erst einmal an was `itertools.izip()` mit diesen Zeilen macht. Vielleicht reicht das ja schon aus.
Antworten