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.
Hallo,
ich möchte mittels csv.reader die erste Zeile einer Textdatei lesen und mit allen folgenden Zeilen (2..x) vergleichen, danach die zweite Zeile lesen und mit allen folgenden Zeilen (3..x) vergleichen. Mit folgender Syntax funktioniert das nur für die erste Zeile im Vergleich mit allen weiteren:
with open(filename_input, 'r') as csvdatei:
csv_reader = csv.reader(csvdatei, delimiter=',')
for zeile1 in csv_reader:
...
for zeile2 in csv_reader:
...
Wie komme ich wieder in die äußere Schleife zurück ?
Was ist das eigentliche Ziel hier? Denn was du da machst ist ein quadratischer Algorithmus von der Laufzeit her, und das ist eher schlecht. Ggf. waere ein sortieren und dann einmal auf Dubletten vergleichen deutlich besser. Konzeptionell koennte das so aussehen:
import itertools
import random
def generate_test_data():
return [random.choice("ABCDEFG") for _ in range(100)]
def main():
test_data = generate_test_data()
test_data = sorted(test_data)
for key, group in itertools.groupby(test_data):
print(key, len(list(group)))
# main guard
if __name__ == '__main__':
main()
Ich habe eine Datei mit Punktkoordinaten (nr, x, y) und möchte alle Punkte ermitteln, deren Abstand einen vorgegebenen Wert unterschreitet. Dazu vergleiche ich den ersten Punkt mit allen weiteren (2..x) und berechne jeweils den Abstand. Danach vergleiche ich den 2. Punkte mit mit allen weiteren (3...x) u.s.w.
Der csv.reader ist ja ideal für solche Dateien. Bei mir läuft nur die innere Schleife korrekt durch, die äußere dagegen nicht.
@RolandKM: Der Iterator den `csv.reader()` liefert, kann man nur einmal durchlaufen. Wenn Du über die selben Daten mehrfach iterieren willst, musst Du sie erst komplett in den Speicher zum Beispiel in eine Liste laden. Und dann kann man `itertools.combinations()` verwenden um sich alle Kombinationen von Datensätzen in *einer* Schleife geben zu lassen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman