Enumerate - int object not subscriptable

Peter Otten __peter__ at web.de
Wed Aug 21 03:07:22 EDT 2019


Sayth Renshaw wrote:

> def output_data(s):
>     serie = fibo(input_length)
>     x = []
>     y = []
>     
>     for num1, num2 in pairwise(serie):
>         y.append( num2 / num1)

It looks like y contains unique values. In that case replace

>     for item in y:
>         x.append(y.index(item))

with 
      x = list(range(len(x)))

or use a single loop

      for index, (num1, num2) in enumerate(pairwise(serie)):
         x.append(index)
         y.append( num2 / num1)
 
>     draw_graph(x, y)

> Kept trying with the enumerate style

> for i, num in enumerate(serie):
>     while i < len(serie)-1:
>     x.append(int(serie[i + 1])/ int(serie[i]))
>     i += 1

There should be only one loop; use if ... to avoid the IndexError

for i, num in enumerate(serie):
    if i < len(serie)-1:
       x.append(serie[i + 1]/ num)
       y.append(i)

or clip the list:

for i, num in enumerate(serie[:-1]):
    x.append(serie[i + 1]/ num)
    y.append(i)

But I would definitely recommend pairwise().




More information about the Python-list mailing list