Hat die Rust-Sprache eine Möglichkeit, eine Funktion auf jedes Element in einem Array/Vektor anzuwenden. Ich weiß in Python gibt es die map()
Funktion, die diese Aufgabe erfüllt. In R gibt es die , tapply()
und apply()
Funktionen, die dies auch tun. Ich habe mich gefragt, ob es eine etablierte Möglichkeit gibt, eine Funktion in Rust zu vektorisieren?Hat Rust eine Möglichkeit, eine Funktion/Methode auf jedes Element in einem Array oder Vektor anzuwenden?
Antwort
Es gibt ein paar Feinheiten hier:
Wir Karte haben, die auf Iteratoren arbeitet. So können Sie:
some_vec.iter().map(|x| { })
Allerdings sind Iteratoren faul, so dass dies nichts tun wird. Sie können ein .collect() an das Ende heften, um einen neuen Vektor mit den neuen Elementen zu erstellen, wenn Sie das möchten.
Der üblicher Weg etwas ohne Zuweisung zu tun ist, ein for-Schleife zu verwenden:
for i in &vec {
Wenn Sie wirklich den funktionalen Stil wollen, können Sie die forall-Methode in der itertools Kiste verwenden können.
Sag Steve, ich frage mich nur, ob es einen Leistungsunterschied zwischen der Iterator/Collect-Methode und der' for'-Schleife gibt. Ich weiß in Python, dass es einen wichtigen Leistungsunterschied zwischen Loops, List Comprehensions und der Funktion 'map()' gibt. Gibt es für Rust irgendwelche Leistungsrichtlinien für solche Probleme - hauptsächlich numerische Berechnungen? – krishnab
for Schleifen sind Zucker für Iteratoren in Rust: http://doc.rust-lang.org/stable/std/iter/index.html#rust%27s-for-loop so sollte nicht :) –
- 1. Hat Rust eine Möglichkeit, mehrere Bytes in eine Zahl umzuwandeln?
- 2. Einfache Möglichkeit, eine Funktion auf ein Array anzuwenden
- 3. R, Funktion auf jedes Element in Vektor anwenden
- 4. Gibt es eine schnelle Möglichkeit, jQuery um jedes Element in einem Array zu wickeln?
- 5. prüft jedes Element eines Array eine Bedingung
- 6. Gibt es eine bequeme Möglichkeit, eine Nachschlagetabelle auf ein großes Array in numpy anzuwenden?
- 7. Gibt es eine Möglichkeit, eine Meta-Berechtigung für jedes Modell in einer Django-App anzuwenden?
- 8. Javascript: wie auf jedes Element in einem Array zugreifen
- 9. Gibt es eine Möglichkeit, Anmerkungen bedingungslos anzuwenden?
- 10. Clojure: Rufen Sie eine Funktion für jedes Element in einem Vektor mit ihm Index
- 11. NHibernate Wie schreibe ich eine Abfrage mit wie jedes Element in einer Liste oder Array
- 12. R: Wiederholen Sie den Vektor für jedes Element in Vektor
- 13. Wie kann ich in Rust Elemente in einem Vektor, Slice oder Array tauschen?
- 14. Wie wird eine Validierungsregel auf jedes Element in einem Array angewendet?
- 15. Multiplizieren Sie jedes Element in einem Vektor, um eine Matrix zu erstellen
- 16. Konvertiere eine Zeichenfolge von Zahlen in ein Array/Vektor von Ints in Rust
- 17. Punktposition in einem Vektor/Array
- 18. Gibt es eine saubere Möglichkeit, ein Java-Array mit demselben Wert für jedes Element zu deklarieren?
- 19. Schleife durch Array, wobei jedes Element eine JUnit Test
- 20. Einfache Möglichkeit zu testen, ob jedes Element in einem numpy Array zwischen zwei Werten liegt?
- 21. Zählfrequenz jedes Elements in Vektor
- 22. C#: Ändern von Werten für jedes Element in einem Array
- 23. Haskell: Gibt es eine idiomatische Möglichkeit, jedes Element in einer Liste in eine eigene Liste einzufügen?
- 24. Wie umgehen Sie SecurityTrustResourceUrl für jedes Element in einem Array?
- 25. Erstellen Sie Vektor von Objekten mit einem Merkmal in Rust
- 26. In Rust, ist ein Vektor ein Iterator?
- 27. Wie überprüfe ich eine Bedingung für jedes Element in einem Array?
- 28. Versuchen, mehrere Stile auf eine DataGridRow anzuwenden
- 29. Get jedes Element in einem Array von Benutzereingabe
- 30. PHP hängt jedes Element in einem Array an
Hier gehts: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.map Sie können es verwenden wie: 'vec! [1, 2, 3] .into_iter() .map (| x | x * 2) .collect ::>() ' –
Adrian