从Python转Rust:如何用索引Vec访问目标Vec的指定元素
Rust中通过索引向量访问目标向量元素的简洁实现
你可以利用Rust的迭代器实现类似NumPy的索引访问逻辑,代码简洁且符合Rust风格:
fn main() { let a: Vec<i32> = vec![1,2,3,4,5,6,7]; let indices = vec![1,0,2,1]; let b: Vec<_> = indices.iter().map(|&idx| a[idx]).collect(); println!("{:?}", b); }
运行结果为 [2, 1, 3, 2],和你Python代码的输出一致。
代码说明
indices.iter()遍历索引向量中的每一个元素map(|&idx| a[idx])将每个索引映射为目标向量a对应位置的元素collect()把映射后的迭代器结果收集成新的Vec
这种写法既避免了手动逐个写索引的繁琐,也比显式for循环更简洁,同时保留了Rust的安全性(索引越界时会触发运行时panic,和直接使用a[idx]的行为一致)。
内容的提问来源于stack exchange,提问作者Kazai Aban Torin
相关产品推荐
相关产品推荐

