Bir vektörün her n * i elemanını elde etmenin bir yolu var mı?
Jan 05 2021
n * i
Bir vektörün her elemanını elde etmenin akıllıca bir yolu var mı ? Bu vektöre sahibim:
let example = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];
Bu vektörün her üçüncü değerini istiyorum, bu nedenle çıktı şöyle olacak:
let result = vec![3, 6, 9];
Bunu bir for döngüsü ile başarabileceğimi biliyorum:
let mut result: Vec<i32> = vec![];
let offset = 3;
for (index, value) in example.iter().enumerate() {
if (index + 1) % offset == 0 {
result.push(value.clone());
}
}
Yanıtlar
1 kmdreko Jan 05 2021 at 04:07
Her yineleme için n inci elemanı, kullanım .step_by(). Bununla birlikte, bunu başlangıç değerinde kullanarak, zincirlemeniz .skip()de gerekir . oyun alanı :
let example = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];
let n = 3;
let result: Vec<_> = example.iter().skip(n-1).step_by(n).copied().collect();
println!("{:?}", result);
[3, 6, 9]
Ayrıca bakınız:
- Her N'inci değeri döndüren yineleyici
- Her ikinci sayıyı yineleme
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı