Beste Weg, um die Ergebnisse aus einer Pythonschleife zu verfolgen

Ich habe eine ziemlich große Schleife, die 500 Mal laufen muss, und ich bin neu, um die Programmiersprache zu benutzen und diese Art von Simulation zu machen.

Aber ich muss die Ergebnisse jedes Runs dokumentieren, und wenn die Liste (table1) entweder alle 0's enthält, alle 1 oder eine Mischung aus beiden.

  • UnboundLocalError bei der Verwendung von + = aber nicht angehängter Liste
  • Eintrag hinzufügen, um den ersten in Python aufzulisten und zu entfernen
  • Was ist der Unterschied zwischen LIST.append (1) und LIST = LIST + [1] (Python)
  • Python - Verlängern einer Liste führt direkt zu keiner, warum?
  • Python JSON dump / append an .txt mit jeder Variable auf neue Zeile
  • Fügen Sie mehrere Sequenzen aus einer FASTA-Datei zu einer Liste in python hinzu
  • Ich habe mich nur gefragt, welche Methode am schnellsten wäre, um herauszufinden, welcher Anteil der 500 Simulationen zu einer Liste geführt hat, die alle 0, alle 1 oder eine Mischung enthielt und wenn append würde es zu viel verlangsamen.

    for x in range(0, 500): times = 300 gamma_val = 2 table1 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] total = 0.0 while total < times: table = [0 for i in range (21)] for d1 in range(21): if table1[d1]: table[d1] = -(1/gamma_val)*math.log((random.random())) else: table[d1] = -(math.log(random.random())) ####Goes on to make new table1 with changes, either all 1's, all 0's or a mix of 0s #########and 1s files1 = 0 files01 = 0 files0 = 0 if "1" "0" in table1 == True: files01 += 1 elif 1 in table == True: files1 += 1 elif 0 in table1 == true: files0 += 1 

  • Ändern Sie die Variablen eines Verschlusses in Python
  • Pythonschliessen + oop
  • Python schließen lokale Variablen
  • Python Lambda Verschluss Scoping
  • Kannst du Verschlüsse erklären (wie sie sich auf Python beziehen)?
  • 3 Solutions collect form web for “Beste Weg, um die Ergebnisse aus einer Pythonschleife zu verfolgen”

    Um zu wählen, wo man anhängt, erstellen Sie 2 Boolesche Vars (Has1s und Has0s) vor der while-Schleife, die jeweils auf False initialisiert wurden. Setzen Sie Has1s auf True, wann immer Sie eine 1 & Has0s bekommen, wenn Sie eine 0 bekommen – dann vermeiden Sie die (bis zu) 3 Suchvorgänge am Ende.

    Was genau brauchst du am Ende?

    Wenn du nur den Anteil aller 1's, alle 0's oder Mixes kennen möchtest, dann scheint es intuitiver (für mich zumindest), nur variable Werte zu erhöhen, anstatt Listen zu generieren. Wenn du den Code so einstellst:

     ... files1=0 files01=0 files0=0 if 1 in table1 and 0 in table1: files01 += 1 elif 1 in table: files1 += 1 elif 0 in table1: files0 += 1 ... 

    Dann musst du nicht ein len(files01) am Ende zu wissen, wie viele hatten eine Mischung aus 1 und 0's zu tun.

    Es gibt keine Geschwindigkeit verloren zu append() , im Vergleich zu der Geschwindigkeit verloren, um Scannen über die Dinge mehrmals. Und es gibt sehr wenig Zeit verloren, um Speicher Operationen im Vergleich zu den Berechnungen. Also mach dir keine Sorgen. Ich kann die Zählungen nicht behalten, wenn ich sie aus den Längen der Listen bekommen kann, die du sowieso sammeln möchtest. Es ist besser lesbar, alles einmal zu machen. Machen Sie das Zeug, und dann zählen.

    Ich vertraue den Standardcontainern im Zusammenhang mit Entscheidungen über die Geschwindigkeit der Algorithmen. Also würde ich die Zeile auf einen Satz setzen und mit dem Set ([0]), Set ([1]) und Set ([0,1]) vergleichen. Ich nehme an 'in' wird einen doppelten Scan der Zeile zu tun, während Set () wird einen Pass machen.

     BOTH = set([0, 1]) results = {'0': [], '1': [], '01': []} .... make the list .... elements = set(table) if elements == BOTH: results['01'].append(table) else if 1 in elements: results['1'].append(table) else: results['0'].append(table) 

    Und ich werde versuchen, meine Kommissionierung über Stil, nicht gerade Fehler zu machen:

    Verwenden Sie die letzte sonst, nicht alle Bedingungen ausschöpfen; Es ist wirklich lesbarer. Erschöpft sie alle separat macht Leser fragen, welchen Fall man sich vorstellen könnte übrig bleiben. Es züchtet Paranoia.

    Im Allgemeinen ist eigentlich das Vergleichen von Dingen zu True oder False nicht pythonisch. Überprüfen der Gleichheit auf die Konstante True ist die am wenigsten zuverlässige Weg, um zu bekommen, was Sie wollen aus einer Bedingung in Python. Es gibt viele Python-Idiome, die sich auf die Wahrheit einer Aussage verlassen, die durch die Existenz eines Objekts oder die Nicht-Leere einer Liste repräsentiert wird. So wirst du Programmierern begegnen, die etwas anderes als True oder False aus Helfer-Funktionen zurückgeben, um boolesche Bestimmungen zu repräsentieren. Gewöhnen Sie sich daran, nicht darüber zu sein.

    Auch schmerzhaft, wie es scheint, in wenn gemischt mit anderen Vergleichsoperatoren Ketten, als ob es bedeutete < , was ist nicht idiomatisch für Nicht-Analysten, die Sie es nie tun sollten.

    Python ist die beste Programmiersprache der Welt.