Übergeben Sie den bedingten Ausdruck als Funktionsargument

geschlossen

Ich schreibe eine Funktion für Regionen, die in einem unregelmäßigen Raster wachsen: Beginnen Sie in einem Startfach, suchen Sie die benachbarten Behälter und fügen Sie sie in den Satz der zurückgegebenen Behälterindizes ein, wenn eine bestimmte Anforderung erfüllt ist. Ich möchte, dass die Anforderung willkürlich ist, z. B. '> 2', '> = 2', '== 2' usw. Die Syntax wäre also:

myregion = get_region(bin_coordinates, bin_values, seed_bin, '> 2')

und der Bereich benachbarter Bins, deren Werte größer als 2 sind, wird zurückgegeben.

Im Wesentlichen suche ich nach der gleichen Funktionalität wie in der Pandas-Bibliothek, in der Folgendes möglich ist, wenn ein HDF-Speicher abgefragt wird:

store.select('dfq',where="A>0 or C>0")

Ich könnte natürlich eine Art Parser mit if / else-Anweisungen schreiben, um '> 2' in Code zu übersetzen, aber ich habe mich gefragt, ob es einen eleganteren Weg gibt?

Scheune

Verwenden Sie ein Lambda (eine anonyme Funktion), z. B. Lambda x: x> 2. Deklarieren Sie getregion als zB getregion (Koordinaten, Werte, testfun) und nennen Sie es zB getregion (diese Datensätze, diese Werte, Lambda x: x> 2). Verwenden Sie dann in getregion den Test zB if testfun (Wert). Wählen Sie jedoch einen besseren Namen als testfun, der beschreibt, was ein Ergebnis von True bedeutet.

Ein anderer Ansatz wäre, einige "Standard" -Bewertungsfunktionen zu definieren und ihren Namen an getregion zu übergeben, z

def gt2(x):
    return (x>2)

Deklarieren Sie getregion wie für das Lambda-Beispiel:

def getregion( coordinates, values, testfun ):
    ...
    if testfun(x):
        ...

und rufen Sie getregion so auf:

getregion(thesecoordinates, thesevalues, gt2 )

HTH Barny

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Übergeben Sie den Metatyp als Funktionsargument

Übergeben Sie den Ausdruck als benannten Argumentnamen

Sollten Sie coroutineScope als Funktionsargument übergeben?

Übergeben Sie `struct` als Typnamen an das Funktionsargument

Übergeben Sie die geerbte Vorlagenstruktur als Funktionsargument

Übergeben Sie den Symbolvektor als Funktionsargument und konvertieren Sie ihn in einen Zeichenvektor

Übergeben Sie den Ausdruck als Variable an die Kurve

Übergeben Sie den Ausdrucksparameter als Argument an einen anderen Ausdruck

Übergeben Sie das Funktionsargument an den Selektor in Swift

Funktionsargument als Formel übergeben

Doppelzeiger als Funktionsargument übergeben

Fügen Sie zwei numpy-Arrays hinzu, indem Sie den Ausdruck lamdify - pass als Funktionsargument verwenden

Übergeben Sie eine anonyme Aufzählung als Funktionsargument

Übergeben Sie eine verkettete Zeichenfolge als Funktionsargument in R.

Übergeben Sie enum in einem Bereich als Funktionsargument an einen anderen

Übergeben Sie einen Teil eines Arrays als Funktionsargument

Übergeben Sie ein aggregiertes Zwischenergebnisfeld als Python-Funktionsargument in Pymongo

Übergeben Sie ein numpy-Array als Funktionsargument

Übergeben Sie den Ausdruck an den Initialisierer

C # Übergeben Sie den Ausdruck als Argument und verwenden Sie PredicateBuilder

So übergeben Sie ein Funktionsargument an den jquery-Selektor

Übergeben eines Funktionsobjekts als Funktionsargument

javaScript - Objekt als Funktionsargument übergeben

Übergeben Sie den Eigenschaftsnamen als Lambda-Ausdruck, um Attributwerte zu lesen

Vereinfachen Sie den bedingten Ausdruck mit C # 6

Vereinfachen Sie den bedingten ternären Ausdruck in c#

Lua-Muster - Bewerten Sie den bedingten Ausdruck

Bewerten Sie den als Zeichenfolge angegebenen Ausdruck

Teilen Sie den Ausdruck String als ArrayList

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  3. 3

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  4. 4

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  7. 7

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  8. 8

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  9. 9

    Eclipse Oxygen - Projekte verschwinden

  10. 10

    Wie wählt man Unterschiede mit drei Tabellen aus?

  11. 11

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  12. 12

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  13. 13

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  14. 14

    Wie kann ich den Kaskadenmodus global einstellen?

  15. 15

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  16. 16

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  17. 17

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  18. 18

    Was ist schneller: SUM über NULL oder über 0?

  19. 19

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  20. 20

    Kann ich ein Tkinter-Canvas erstellen, das mehrere Zeilen in einem Text-Widget umfasst?

  21. 21

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

heißlabel

Archiv