4 ms·
Extra commas are "valid in pure python" in the following sense that I can demonstrate. Open ipython3 In [3]: class Test: ...: def __getitem__(s
by kzrdude 5y ago
Extra commas are "valid in pure python" in the following sense that I can demonstrate.
Open ipython3
In [3]: class Test:
...: def __getitem__(self, index):
...: print(index)
...:
In [4]: Test()[1, 2, 1:3, ..., :]
(1, 2, slice(1, 3, None), Ellipsis, slice(None, None, None))
It's valid and we get the complicated tuple of integers, slices, ellipsis etc as printed.
Numpy has existed for a long time. Its needs have been taken care of in upstream Python, to a big extent, and other libraries can use the same features.
- ohyoutravel 5y agoInteresting! Neither myself nor my coworkers could get the snippet I posted working outside the context of an ndarray, so I had speculated at that time that it there was something else going on under the hood. You seem to have a much better grasp of Python than us, would you mind posting an example where the snipped I posted successfully accesses data from an array in pure Python? That way I can not only take the L, but correct the record and learn something in the process.
- kzrdude 5y agoThis program is quick & lazy but it uses a 1D python list and pretends it's a 2D list. It implements 2D slicing, giving you a square subset just like ndarray. It doesn't intend to be all correct or nice or useful. https://www.pythonmorsels.com/p/2rk5t/ https://www.pythonmorsels.com/p/2rk5t/ Is laziness a virtue? I reused the slicing implementation in `range(foo)[index]` so I didn't need to do that logic myself.
- ohyoutravel 5y agoVery nice!