gpt4 book ai didi

vector - 是否可以使用迭代器将向量分成 10 个一组?

转载 作者:行者123 更新时间:2023-11-29 08:31:36 25 4
gpt4 key购买 nike

我有let my_vec = (0..25).collect::<Vec<_>>()我想拆分 my_vec进入 10 组的迭代器:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19];
[20, 21, 22, 23, 24, None, None, None, None, None];

在 Rust 中使用迭代器可以做到这一点吗?

最佳答案

Iterator trait 上没有这样的辅助方法直接地。但是,有两种主要方法可以做到这一点:

  1. 使用 [T]::chunks() method (可以直接在 Vec<T> 上调用)。但是,它有一个小区别:它不会产生 None , 但最后一次迭代产生了一个较小的切片。对于在不完整的情况下省略最终 block 的始终精确的切片,请参阅 [T]::chunks_exact() method .

Example :

    let my_vec = (0..25).collect::<Vec<_>>();

for chunk in my_vec.chunks(10) {
println!("{:02?}", chunk);
}

结果:

```none
[00, 01, 02, 03, 04, 05, 06, 07, 08, 09]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[20, 21, 22, 23, 24]
```
  1. 使用 Itertools::chunks() method来自 the crate itertools .这个 crate 扩展了 Iterator来自标准库的特征所以这个 chunks()方法适用于所有迭代器!请注意,为了通用,用法稍微复杂一些。这与上述方法具有相同的行为:在最后一次迭代中, block 将变小而不是包含 None。 s.

Example :

    extern crate itertools;
use itertools::Itertools;

for chunk in &(0..25).chunks(10) {
println!("{:02?}", chunk.collect::<Vec<_>>());
}

结果:

```none
[00, 01, 02, 03, 04, 05, 06, 07, 08, 09]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[20, 21, 22, 23, 24]
```

关于vector - 是否可以使用迭代器将向量分成 10 个一组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56348976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com