I have a very simple problem I can't solve.
I'm using Numba and Cuda.
I have a list T=[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0] and I want a tuple with the elements of the list, like this:
C=(1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0).
In Python I would code C=tuple(T), but I can't with Numba.
I tried these solutions but none of them work because you can't modify the type of a variable inside a loop with Numba.
Important My list has a length which is a multiple of 3 and I use this knowledge for my algorithms.
Code
First algorithm, recursively, it works by giving the algorithm L=[(1.0,),(2.0,),(3.0,),(4.0,),(5.0,),...,(9.0,)]
@njit
def list2tuple(L):
    n=len(L)
    if n == 1:
        return L[0]
    else:
        C=[]
        for i in range(0,n-2,3):
            c=L[i]+L[i+1]+L[i+2]
            C.append(c)
        return list2tuple(C)
Problem: It enters an infinite loop and I must stop the kernel. It works in basic Python.
algorithm 2: it works by giving T=[1.0,2.0,3.0,...,9.0]
@njit
def list2tuple2(T):
    L=[]
    for i in range(len(T)):
        a=(T[i],)
        L.append(a)
    for k in range(len(T)//3-1):
        n=len(L)
        C=[]
        for j in range(0,n-2,3):
            c=L[j]+L[j+1]+L[j+2]
            C.append(c)
        L=C
    return L[0]
Problem  When C=[(1.0,2.0,3.0),(4.0,5.0,6.0),(7.0,8.0,9.0)], you can't say L=C because L = [(1.0,),(2.0,),(3.0,),....(9.0,)] is List(Unituple(float64x1)) and can't be unified with List(Unituple(float64x3)).
I can't find a solution for this problem.