#iterator #unzip #itertools #zip

many-unzip

multiunzip from itertools but with support for larger than 12-tuples

4 releases

0.1.1 Aug 30, 2024
0.1.0 Aug 29, 2024
0.0.2 Aug 29, 2024
0.0.1 Aug 29, 2024

#263 in Algorithms

Download history 673/week @ 2024-08-27 1740/week @ 2024-09-03 2229/week @ 2024-09-10 1980/week @ 2024-09-17 1624/week @ 2024-09-24 2068/week @ 2024-10-01 1515/week @ 2024-10-08 3143/week @ 2024-10-15 3343/week @ 2024-10-22 2085/week @ 2024-10-29 1366/week @ 2024-11-05 3665/week @ 2024-11-12

11,389 downloads per month

MIT/Apache

315KB
250 lines

many-unzip

License Latest version Latest Docs downloads-badge

API docs

multiunzip from itertools but with support for larger than 12-tuples.

Converts an iterator of tuples into a tuple of containers.

many_unzip() consumes an entire iterator of k-tuples tuples, producing k collections, one for each column. With default features, many_unzip supports up to 24-tuples. Larger numbers can be enabled with feature flags, up to 192-tuples with the 192_tuple feature.

This function is, in some sense, the opposite of multizip.

# use many_unzip::many_unzip;

let inputs = vec![
    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13),
    (14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26),
    (27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39),
];

let (a, b, c, d, e, f, g, h, i, j, k, l, m): (
    Vec<_>,
    Vec<_>,
    Vec<_>,
    Vec<_>,
    Vec<_>,
    Vec<_>,
    Vec<_>,
    Vec<_>,
    Vec<_>,
    Vec<_>,
    Vec<_>,
    Vec<_>,
    Vec<_>,
) = many_unzip(inputs);

assert_eq!(a, vec![1, 14, 27]);
assert_eq!(b, vec![2, 15, 28]);
assert_eq!(c, vec![3, 16, 29]);
assert_eq!(d, vec![4, 17, 30]);
assert_eq!(e, vec![5, 18, 31]);
assert_eq!(f, vec![6, 19, 32]);
assert_eq!(g, vec![7, 20, 33]);
assert_eq!(h, vec![8, 21, 34]);
assert_eq!(i, vec![9, 22, 35]);
assert_eq!(j, vec![10, 23, 36]);
assert_eq!(k, vec![11, 24, 37]);
assert_eq!(l, vec![12, 25, 38]);
assert_eq!(m, vec![13, 26, 39]);

No runtime deps

Features