Comments (4)
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.
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.
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.
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)
- Error loading C modules in 2.x HOT 6
- Expose Lua load arguments (mode and chunkname) HOT 9
- Identity of wrapped Lua objects
- Deadlock involving __dealloc__ HOT 3
- [Feature Request] Async Overhaul
- [Feature Request] Expose Guts for better fine control.
- Ship Lua 5.1 with default lupa installation HOT 3
- pip install lupa fails on Windows HOT 2
- Terra HOT 1
- question: using python functions on lua tables HOT 2
- error lupa.lua54.LuaSyntaxError:
- Can Chinese name function functions be supported?
- Can't install lupa using pip HOT 3
- lua51 missing HOT 1
- 2.1 `pip install --upgrade lupa` not enough, `--force-reinstall` was needed HOT 4
- Unable to Import 'lua-utf8' in LuaJIT HOT 1
- 2.1: pytest fails in `lupa/tests/test.py::TestOverflowMixin::test_no_overflow` unit HOT 8
- Cython error: Lua "undeclared name not builtin: long" HOT 2
- 'popen' not supported
- How to pass a python dictionary as an argument into a function defined in LUA code? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lupa.