Giter Club home page Giter Club logo

Comments (4)

scoder avatar scoder commented on August 30, 2024

Sounds good to me. AFAICT, there isn't currently a good way to convert tables with nil values. The nil values always get in the way of the iteration.

Should the to_list() method also have a sparseness limit (for safety)? And raise an exception if the limit is exceeded?

Should we name it map_to_list() to make it clear that it doesn't just copy the values? (as list(tbl.values()) would)

from lupa.

scoder avatar scoder commented on August 30, 2024

Or maybe to_list(max_gap=...)? Counting up against a global ratio might not work well if there is a large gap followed only by sequential indices. Or maybe both?

from lupa.

pablomayobre avatar pablomayobre commented on August 30, 2024

What about specifying the length of how many items it should copy? That way you can do something like: for i=1, length do, if length is not specified copy until a nil value is reached... dont know what the original idea was but that is my 2 cents

from lupa.

kmike avatar kmike commented on August 30, 2024

Should the to_list() method also have a sparseness limit (for safety)? And raise an exception if the limit is exceeded?

Hm, default sparseness limit can get in a way here:

if tbl.looks_like_array(max_sparse_ratio=2.0):
    res = tbl.to_array()  # must write the same limit here, not DRY
else:
    res = dict(tbl)

If the intention is to raise an exception for very sparse arrays then it will help.

Should we name it map_to_list() to make it clear that it doesn't just copy the values? (as list(tbl.values()) would)

Yeah, tolist() may discard some values and insert extra None values. But I'm not sure map_to_list is much better.

Or maybe to_list(max_gap=...)? Counting up against a global ratio might not work well if there is a large gap followed only by sequential indices. Or maybe both?

When might a global ratio not work well?

What about specifying the length of how many items it should copy? That way you can do something like: for i=1, length do, if length is not specified copy until a nil value is reached... dont know what the original idea was but that is my 2 cents

The code in lua-cjson doesn't use length and does support occasional nil values. With max_sparse_ratio=1.0 it should have the same effect as stopping at the first nil value.

My main reservation now is that code which relies on looks_like_array is risky because the result is not well-defined for empty tables. From this point of view @scoder's tolist(max_sparse_ratio=.../max_gap=...) without looks_like_array method may be the best.

from lupa.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.