迭代元组中集合中的已排序元素

时间:2016-12-22 19:06:28

标签: collections rust iteration

我试图以2或更多的元组迭代集合中的已排序元素。

如果我有df/df.groupby(level=[0, 1]).transform('sum') ,我可以致电

Vec

但是for window in my_vec.windows(2) { // do something with window } 没有被隐式排序,这将是非常好的。我尝试使用Vec而不是BTreeSet,但我似乎无法在其上调用Vec

试图打电话时

windows

我收到错误

for window in tree_set.iter().windows(2) {
    // do something with window
}

1 个答案:

答案 0 :(得分:5)

Itertools提供tuple_windows方法:

extern crate itertools;

use itertools::Itertools;
use std::collections::BTreeSet;

fn main() {
    let items: BTreeSet<_> = vec![1, 3, 2].into_iter().collect();

    for (a, b) in items.iter().tuple_windows() {
        println!("{} < {}", a, b);
    }
}

请注意windows slices 上的方法,而不是迭代器上的方法,它返回原始切片的子切片的迭代器。一个BTreeMap可能无法提供相同的迭代器接口,因为它不是建立在连续的数据块之上;会有一些值在内存中不会紧接着后续的值。