pythonic

    2.0.3 • Public • Published

    npm version Build Status

    Pythonic

    Python like utility functions for JavaScript: range, enumerate, items, zip and zipLongest.

    These functions return an Iterator instance similar to Python Iterators. This Iterator implementation is lazy evaluated, offers map, filter, reduce, some, every and Symbol.asyncIterator interfaces.

    Install

    npm install pythonic --save

    Functions

    range

    import {range} from 'pythonic';
     
    range(3).map(x => console.log(+ 1));
    // 1
    // 2
    // 3
     
    for (const i of range(10, 25, 5))
        console.log(i);
    // 10
    // 15
    // 20
     
    console.log(range(5).reduce((accumulator, current) => accumulator + current));
    // 10

    enumerate

    import {enumerate} from 'pythonic';
     
    const arr = ['a', 'b'];
    for (const [index, value] of enumerate(arr))
        console.log(`index: ${index}, value: ${value}`);
    // index: 0, value: a
    // index: 1, value: b

    zip | zipLongest

    import {zip, zipLongest} from 'pythonic';
     
    const arr1 = ['a', 'b'];
    const arr2 = ['c', 'd', 'e'];
    for (const [first, second] of zip(arr1, arr2))
        console.log(`first: ${first}, second: ${second}`);
    // first: a, second: c
    // first: b, second: d
     
    for (const [first, second] of zipLongest(arr1, arr2))
        console.log(`first: ${first}, second: ${second}`);
    // first: a, second: c
    // first: b, second: d
    // first: undefined, second: e
     
    // unzip
    const [arrayFirst, arraySecond] = [...zip(...zip(arr1, arr2))];

    items

    import {items} from 'pythonic';
     
    const obj = {a: 'aa', b: 'bb'};
    for (const [key, value] of items(obj))
        console.log(`key: ${key}, value: ${value}`);
    // key: a, value: aa
    // key: b, value: bb
     
    const map = new Map([[1, 'one'], [2, 'two']]);
    for (const [key, value] of items(map))
        console.log(`key: ${key}, value: ${value}`);
    // key: 1, value: one
    // key: 2, value: two

    Iterator

    import {Iterator, range} from 'pythonic';
     
    const randomIntegers = (size, start, stop) => new Iterator(function * () {
        for (const _ of range(size))
            yield Math.floor(Math.random() * (stop - start) + start);
    });
     
    const randomNumbers = randomIntegers(3, 10, 1000);
     
    for (const randomNumber of randomNumbers)
        console.log(randomNumber);
    // 685
    // 214
    // 202
     
    console.log(randomNumbers.some(value => value > 10));
    // true
    console.log(randomNumbers.every(value => value < 1000));
    // true

    License

    MIT

    Install

    npm i pythonic

    DownloadsWeekly Downloads

    49

    Version

    2.0.3

    License

    MIT

    Unpacked Size

    9.61 kB

    Total Files

    4

    Last publish

    Collaborators

    • keyvan-m-sadeghi
    • assister.ai