[英]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.