簡體   English   中英

給定的元組向量創建兩個單獨的列表

[英]Given vector of tuples create two separate lists

我有一個元組向量:

let v = vec![(1, 1), (1, 1), (1, 3), (1, 4), (2, 2), (2, 4), (2, 6)];

我想把它分成兩個列表。 第一個列表包含每個元組的第一個元素,第二個列表包含第二個元素,即:

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

我怎樣才能做到這一點?

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]
}

@Alexey Larionov 的回答是完美的,但如果您正在尋找一種更手動的方法,考慮到 Rust 的模式匹配能力,它仍然是相當合理的。

fn main() {
    let v = vec![(1, 1), (1, 1), (1, 3), (1, 4), (2, 2), (2, 4), (2, 6)];
    
    let mut v1: Vec<i32> = vec![];
    let mut v2: Vec<i32> = vec![];
    
    for (first, second) in v {
        v1.push(first);
        v2.push(second);
    }
    
    println!("{:?}", v1);
    println!("{:?}", v2);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM