代码之家  ›  专栏  ›  技术社区  ›  Krzysztof Kaczyński

如何得到向量的evry n*i元素

  •  0
  • Krzysztof Kaczyński  · 技术社区  · 5 年前

    有没有什么聪明的方法可以让每一个 n * i

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

    我想要这个向量的每三分之一的值,所以输出为:

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

    我知道我可以通过for循环实现这一点:

    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());
        }
    }
    
    0 回复  |  直到 5 年前
        1
  •  5
  •   kmdreko    5 年前

    迭代 .step_by() . 但是,使用从初始值开始的值,您需要 .skip() playground :

    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]
    

    推荐文章