La lingua di Rust ha un modo per applicare una funzione a ciascun elemento di un array/vettore. So che in Python c'è la funzione map()
che esegue questa attività. In R ci sono le funzioni lapply()
, tapply()
e apply()
che fanno anche questo. Mi stavo chiedendo se esistesse un modo consolidato per vettorizzare una funzione in Rust?Rust ha un modo per applicare una funzione/metodo a ciascun elemento di un vettore o di una matrice?
Rust ha un modo per applicare una funzione/metodo a ciascun elemento di un vettore o di una matrice?
risposta
Ci sono alcune sottigliezze qui:
Abbiamo mappa, che lavora su iteratori. Quindi puoi:
some_vec.iter().map(|x| { })
Tuttavia, gli iteratori sono pigri, quindi questo non farà nulla. Puoi virare un .collect() alla fine per creare un nuovo vettore con i nuovi elementi, se è quello che vuoi.
Il modo standard di fare qualcosa senza allocare è quello di utilizzare un ciclo for:
for i in &vec {
Se davvero si vuole lo stile funzionale, è possibile utilizzare il metodo forall nel itertools cassa.
Say Steve, mi sto chiedendo se c'è una differenza di prestazioni tra l'approccio iterator/collect rispetto al ciclo' for'. Conosco in Python un'importante differenza di prestazioni tra i loop, le list comprehensions e la funzione 'map()'. Ci sono delle linee guida di performance per Rust su problemi come questo - per lo più il calcolo numerico? – krishnab
per i loop sono zucchero per gli iteratori in Rust: http://doc.rust-lang.org/stable/std/iter/index.html#rust%27s-for-loop quindi non dovrebbe essere :) –
- 1. Esiste un modo per applicare una funzione a ciascun membro di una struct in C++?
- 2. javascript applicare una funzione di ciascun elemento array di oggetti
- 3. Applicare una funzione a ogni riga di una matrice o di un frame di dati
- 4. Come applicare una funzione a ciascun elemento di una colonna di array in Postgres?
- 5. Tensoflow applicare op a ciascun elemento di un tensore 2d
- 6. Quale è un modo migliore per verificare se una matrice ha più di un elemento?
- 7. Moltiplicazione di elementi di una matrice e di un vettore?
- 8. Convertire una stringa di numeri in una matrice/vettore di int in Rust
- 9. Posso applicare più di una classe CSS3 a un elemento?
- 10. Assegnazione di un vettore a una riga matrice in MATLAB
- 11. Applicare una funzione a ciascun frame di dati
- 12. Qual è il modo migliore per svuotare un vettore o una matrice in AS3?
- 13. Algoritmo per contare il numero di elementi collegati per ciascun elemento in una matrice
- 14. riempimento di un vettore o matrice di incremento
- 15. Esiste una funzione R per trovare l'indice di un elemento in un vettore?
- 16. C'è un modo conveniente per applicare una tabella di ricerca a un grande array in numpy?
- 17. Come sottrarre un vettore da ciascuna riga di una matrice?
- 18. Conversione di una matrice matlab in un vettore
- 19. un vettore ad una matrice superiore Triangle di riga R
- 20. Come posso scambiare elementi in un vettore, una sezione o un array in Rust?
- 21. Applicare una funzione a ciascuno strato di una matrice 3d, restituendo un array
- 22. Aggiungere un prefisso a ciascun elemento di un array PHP
- 23. Python: trovare un elemento in una matrice
- 24. Bel modo per moltiplicare ogni riga di una matrice con un vettore in r
- 25. Tuple splat/applicare a Rust
- 26. Creazione di un vettore di zeri per una dimensione specifica
- 27. Applicare una classe a un tag br?
- 28. C'è un modo per includere file binari o di testo in una libreria Rust?
- 29. Aggiunta di un vettore per un vettore
- 30. Convertire un vettore R in una lista, ogni elemento nel vettore come un elemento della lista
Qui vai: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.map Puoi usarlo come: 'vec! [1, 2, 3] .into_iter() .map (| x | x * 2) .collect ::>() ' –
Adrian