Python Forum
python3 List to array or string to extract data - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: python3 List to array or string to extract data (/thread-18710.html)



python3 List to array or string to extract data - batchenr - May-28-2019

Hey,

i am using python 3 and new to python.
i have this list :

([[[32.098659, 34.826334], [32.099361, 34.830506], [32.097026, 34.831574], [32.095502, 34.827881]]],)
This is how i see the value of the var poly using print
and i made sure its of type list. and the numbers represent X and Y on a map.

now i need to split \ make this list like an array to fit this logic :


  p1x,p1y = poly[0]
    for i in range(n+1):
        p2x,p2y = poly[i % n]
        if y > min(p1y,p2y):
             if y <= max(p1y,p2y):
                 if x <= max(p1x,p2x):
                     if p1y != p2y:
                         xinters = (y-p1y)*(p2x-p1x)/(p2y-p1y)+p1x
                     if p1x == p2x or x <= xinters:
                         inside = not inside

        p1x,p1y = p2x,p2y
    return inside
i need somhow to split poly to fit like an array with poly[0] so it can fit this function
but because its a list i get poly[0] as one big string and havent find a way to split it.

i tryied to use :
dataset_list = ''.join(str(poly))
poly = dataset_list.split(']')
it didnt work.
and i get this error
p1x,p1y = poly[0]
ValueError: too many values to unpack (expected 2)

please help me split this list.
thanks!


RE: python3 List to array or string to extract data - buran - May-28-2019

what you have is tuple with one element list, that list has one element - list. Now that list has many elements - lists
>>> foo = ([[[32.098659, 34.826334], [32.099361, 34.830506], [32.097026, 34.831574], [32.095502, 34.827881]]],)
>>> type(foo)
<class 'tuple'>
>>> foo[0]
[[[32.098659, 34.826334], [32.099361, 34.830506], [32.097026, 34.831574], [32.095502, 34.827881]]]
>>> type(foo[0])
<class 'list'>
>>> foo[0][0]
[[32.098659, 34.826334], [32.099361, 34.830506], [32.097026, 34.831574], [32.095502, 34.827881]]
>>> type(foo[0][0])
<class 'list'>
>>> foo[0][0][0]
[32.098659, 34.826334]
>>> type(foo[0][0][0])
<class 'list'>
>>> foo[0][0][0][0]
32.098659
>>>



RE: python3 List to array or string to extract data - perfringo - May-28-2019

Just to make things clear:

>>> poly = ([[[32.098659, 34.826334], [32.099361, 34.830506], [32.097026, 34.831574], [32.095502, 34.827881]]],)
>>> type(poly)
tuple
>>> len(poly)
1
>>> type(poly[0])
list
>>> len(poly[0])
1
>>> type(poly[0][0])
list
>>> len(poly[0][0])
4



RE: python3 List to array or string to extract data - batchenr - May-28-2019

(May-28-2019, 12:39 PM)buran Wrote: what you have is tuple with one element list, that list has one element - list. Now that list has many elements - lists
>>> foo = ([[[32.098659, 34.826334], [32.099361, 34.830506], [32.097026, 34.831574], [32.095502, 34.827881]]],)
>>> type(foo)
<class 'tuple'>
>>> foo[0]
[[[32.098659, 34.826334], [32.099361, 34.830506], [32.097026, 34.831574], [32.095502, 34.827881]]]
>>> type(foo[0])
<class 'list'>
>>> foo[0][0]
[[32.098659, 34.826334], [32.099361, 34.830506], [32.097026, 34.831574], [32.095502, 34.827881]]
>>> type(foo[0][0])
<class 'list'>
>>> foo[0][0][0]
[32.098659, 34.826334]
>>> type(foo[0][0][0])
<class 'list'>
>>> foo[0][0][0][0]
32.098659
>>>

Hey, Thanks for the quick answers, it doesn't work for me from the code, if i do python3 on terminal and doing your commandes it does work but, from the code it doesn't.
maybe its because i forgot to mention i do :
    poly = list(poly)
in another section before that one ?

this is what i get when i run it through test.py code:

    print("POLYYY", poly[0][0][0])
            print(type(poly))

       [1], INF, POLYYY (32.098659,)
       [1], INF, <class 'list'>
Thanks


RE: python3 List to array or string to extract data - buran - May-28-2019

show us full code snippet. it looks like you do a lot of unnecessary conversions...
best would be to limit the code snippet to 5-10 lines of code that reproduce the problem.