[Cython] how to initialize my c array in a quick way?
Robert Bradshaw
robertwb at math.washington.edu
Thu Nov 13 23:37:34 CET 2008
On Nov 13, 2008, at 2:30 PM, Stefan Behnel wrote:
> Hi,
>
> Greg Ewing wrote:
>> You can do
>>
>> a[0], a[1], a[2], a[3], a[4] = 1, 3, 28, 5, 3
>>
>> which will get turned into a series of assignments.
>>
>> Ideally, what you *should* be able to do is
>>
>> a[:] = 1, 3, 28, 5, 3
>
> In Cython, you can now do
>
> cdef int a[5]
> a[:] = [1, 3, 28, 5, 3]
>
> or
>
> cdef int a[20]
> a[1:6] = [1, 3, 28, 5, 3]
>
> or even
>
> cdef int a[20]
> start = 1
> end = 6
> a[start:end] = [1, 3, 28, 5, 3]
Very cool.
> However, the way it's currently implemented does no bounds
> checking, so it's
> pretty easy to shoot yourself in the foot when you assign non-
> existing slices.
> It's actually not so easy to determine at compile time how long the
> lhs slice
> is, and how long the assigned sequence is.
>
> There's definitely more room for improvements. :)
Ouch. We can make sure (at runtime) that the rhs has the right size,
but there's not much we can do for the lhs. I guess this is no
different than indexing though...
- Robert
More information about the Cython-dev
mailing list