[PYTHON] [Für Anfänger] Einfaches Beispiel für Listenoperationsfunktionen: Zuordnen, Reduzieren, Filtern

Hier sind einige einfache Operationen von `` map```` filter `redu, die häufig in Listenoperationen in jeder Sprache verwendet werden. Java ist redundant, nicht wahr? Ruby und Haskell sind sehr prägnant. Da ich jedoch in meiner täglichen Arbeit Java verwende, weiß ich nicht viel über andere Sprachen Möglicherweise gibt es eine präzisere Möglichkeit, es zu schreiben.

Hier ist ein einfaches Beispiel für.

Machen Sie eine Liste von Zahlen

Übrigens scheint es nicht oft behoben zu sein, die Liste im Geschäft zu initialisieren. Normalerweise werden Listendaten von der Factory-Methode generiert und referenziert. Manchmal führe ich jedoch die folgende Initialisierung als Testdaten in Tests durch.

Java


    List<Integer> xs = Arrays.asList(1, 2, 3, 4, 5);
    //Oder@Wenn es Java 10 oder höher ist, wie von saka1029 gelehrt
    var xs = List.of(1, 2, 3, 4, 5);

    //Es gibt auch eine Möglichkeit, eine solche unendliche Liste zu verwenden. Tun Sie das nicht im Geschäft?
    //Startwert von außen, Funktion,Sie können es schaffen, indem Sie den Grenzwert eingeben.
    xs = Stream.iterate(1, i -> i + 1).limit(5).collect(toList())

Ruby


    xs = [1, 2, 3, 4, 5]
    #Eigentlich scheint das oben genannte ein schlechtes Beispiel zu sein,
    # @Die folgenden von scivola gelehrten sind gut für die Initialisierung.
    xs = [*1..5]

Python


	xs = [1, 2, 3, 4, 5]

Haskell


    xs = [1, 2, 3, 4, 5]
    --Oder
    xs = [1..5]

Clojure


    (def xs '(1 2 3 4 5))
    ;Oder@Wie lagenorhynque kommentierte
    (def xs (range 1 (inc 5)))

Es wird davon ausgegangen, dass diese Liste bereits unten erstellt wurde.

Kartenfunktion

Nehmen Sie eine Liste und verdoppeln Sie jeden Wert.

Das Ergebnis für jede Sprache ist "[2, 4, 6, 8, 10]". Die Druckfunktion entfällt.

Java


	xs.stream().map(i -> i * 2).collect(toList());

Ruby


	xs.map {|i| i * 2}

Python


	list(map(lambda i: i * 2, xs))
	#Vielleicht ist es normal, die Listeneinschlussnotation in Python zu verwenden, um diese Antwort zu geben.
	[i * 2 for i in xs]

Haskell


	map (*2) xs

Clojure


    (map (fn [n](* n 2)) xs)
    ;Oder@Was Lagenorhynque mir erzählt hat. Dieser ist einfach und nett!
    (map #(* % 2) xs)

Filterfunktion

Wählen Sie eine gerade Zahl aus und geben Sie sie zurück.

Das Ergebnis ist `[2, 4]`.

Java


	xs.stream().filter(n -> n % 2 == 0).collect(toList());

Ruby


	xs.select(&:even?)

Python


	list(filter(lambda n: n % 2 == 0, xs))
	#Wahrscheinlich denke ich, dass es eine Listeneinschlussnotation sein wird, ohne wie oben zu schreiben.
	[n for n in xs if n % 2 == 0]

Haskell


	filter even xs

Clojure


	(filter even? xs)

Funktion reduzieren

Die Nummern in der Liste werden hinzugefügt und aggregiert und zurückgegeben.

Das Ergebnis ist `15 `.

Java


    xs.stream().reduce(Integer::sum).orElse(0);

Ruby



    xs.reduce(:+) 
    #Oder l.inject(:+)
    #Bei Nichtverwendung reduzieren
    xs.sum

Python war unfreundlich, weil es keinen Import von @shiracamus gab, also habe ich es geschrieben.

Python


    from functools import reduce
    from operator import add

    reduce(lambda a, b: a + b, xs)
    #Bei Nichtverwendung reduzieren
    sum(xs)
    #Oder@Ich habe von Shiracamus gelernt,
    reduce(add, xs)

Haskell


	foldl (+) 0 xs
	--Wenn Sie Fold nicht verwenden
	sum xs

Clojure


    (reduce + xs)
    ;@Gelehrt von lagenorhynque
    (apply + xs)
    ;Das gleiche Ergebnis kann durch Schreiben erhalten werden. Was wird intern gemacht?(+ 1 2 3 4 5)
    ;reduzieren ist(+ (+ (+ (+ 1 2) 3) 4) 5)

das ist alles.

Ich habe für eine Sprache geschrieben, die ich bisher gelernt habe, aber ich persönlich habe Ruby, Clojure, geschrieben, was ich als angenehm empfand </ b>. Ich fühle, dass das Gefühl ähnlich ist. (Weil beide Autoren Lisp mögen?) Haskell ist zu schrecklich und unangenehm! Ich denke (auf gute Weise) </ b>, aber macht es Spaß! </ B> Ruby, Clojure? Ich weiß nicht warum. Außerdem hat Haskell eine völlig andere Denkweise als andere Sprachen, so dass es schwierig ist, zu lernen.

Recommended Posts