给定的元组向量创建两个单独的列表

Ziv*_*iva 6 rust

我有一个元组向量:

let v = vec![(1, 1), (1, 1), (1, 3), (1, 4), (2, 2), (2, 4), (2, 6)];
Run Code Online (Sandbox Code Playgroud)

我想把它分成两个列表。第一个列表包含每个元组中的第一个元素,第二个列表包含第二个元素,即:

l1 = [1, 1, 1, 1, 2, 2]l2 = [1, 1, 3, 4, 2, 4]

我怎样才能做到这一点?

Ale*_*nov 9

Iterator.unzip()是专门为此创建的。操场

fn main() {
    let v = vec![(1, 1), (1, 1), (1, 3), (1, 4), (2, 2), (2, 4), (2, 6)];
    let (v1, v2): (Vec<_>, Vec<_>) = v.into_iter().unzip();
    println!("{:?}", v1);
    println!("{:?}", v2);

    // [1, 1, 1, 1, 2, 2, 2]
    // [1, 1, 3, 4, 2, 4, 6]
}
Run Code Online (Sandbox Code Playgroud)