क्या वेक्टर के हर n * i तत्व को प्राप्त करने का एक तरीका है?

Jan 05 2021

क्या n * iवेक्टर के प्रत्येक तत्व को प्राप्त करने का कोई चतुर तरीका है ? मेरे पास यह वेक्टर है:

let example = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];

मैं इस वेक्टर का हर तीसरा मूल्य चाहता हूं, इसलिए आउटपुट होगा:

let result = vec![3, 6, 9];

मुझे पता है कि मैं इसे एक लूप के साथ हासिल कर सकता हूं:

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());
    }
}

जवाब

1 kmdreko Jan 05 2021 at 04:07

प्रत्येक n वें तत्व पर पुनरावृति करने के लिए , उपयोग करें .step_by()। हालाँकि, प्रारंभिक मूल्य पर शुरू होने का उपयोग करते हुए, आपको चेन की भी आवश्यकता होगी .skip()। खेल का मैदान :

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]

यह सभी देखें:

  • Iterator जो प्रत्येक Nth मान लौटाता है
  • कैसे हर दूसरे नंबर पर पुनरावृति करें