Rust 是否有等同于 Python 的列表理解语法?
Does Rust have an equivalent to Python's list comprehension syntax?
Python 列表理解真的很简单:
>>> l = [x for x in range(1, 10) if x % 2 == 0]
>>> [2, 4, 6, 8]
Rust 是否有类似的语法:
let vector = vec![x for x in (1..10) if x % 2 == 0]
// [2, 4, 6, 8]
你可以只使用迭代器:
fn main() {
let v1 = (0u32..9).filter(|x| x % 2 == 0).map(|x| x.pow(2)).collect::<Vec<_>>();
let v2 = (1..10).filter(|x| x % 2 == 0).collect::<Vec<u32>>();
println!("{:?}", v1); // [0, 4, 16, 36, 64]
println!("{:?}", v2); // [2, 4, 6, 8]
}
cute 是 Rust 中 Python-esque 列表和字典 (HashMap
) 理解的宏。
#[macro_use(c)]
extern crate cute;
let vector = c![x, for x in 1..10, if x % 2 == 0];
Python 列表理解真的很简单:
>>> l = [x for x in range(1, 10) if x % 2 == 0]
>>> [2, 4, 6, 8]
Rust 是否有类似的语法:
let vector = vec![x for x in (1..10) if x % 2 == 0]
// [2, 4, 6, 8]
你可以只使用迭代器:
fn main() {
let v1 = (0u32..9).filter(|x| x % 2 == 0).map(|x| x.pow(2)).collect::<Vec<_>>();
let v2 = (1..10).filter(|x| x % 2 == 0).collect::<Vec<u32>>();
println!("{:?}", v1); // [0, 4, 16, 36, 64]
println!("{:?}", v2); // [2, 4, 6, 8]
}
cute 是 Rust 中 Python-esque 列表和字典 (HashMap
) 理解的宏。
#[macro_use(c)]
extern crate cute;
let vector = c![x, for x in 1..10, if x % 2 == 0];