[Tutor] Help with building bytearray arrays
Peter Otten
__peter__ at web.de
Mon Sep 10 13:42:00 EDT 2018
Chip Wachob wrote:
> Cameron,
>
> Thank you again for the insight.
>
> Yes, data_out is an equivalently-sized 'chunk' of a larger array.
>
> I'm 'getting' this now..
>
> So, without all the fluff associated with wiggling lines, my function
> now looks like this:
>
> def RSI_size_the_loop():
> results = []
> all_together = [] # not certain if I need this, put it in in an
> attempt to fix the incompatibility if it existed
>
> for x in range (0, MAX_LOOP_COUNT, slice_size):
> results.append(my_transfer(disp, data_out, slice_size)
>
> print " results ", x, " = ", results # show how results grows
> on each iteration
>
> all_together = bytearray().join(results)
>
> print " all together ", all_together
>
>
> I can observe results increasing in size and the last time through the
> loop:
>
> results 48 =
>
[[bytearray(b'\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')],
Note that there are two '[' at the start of the list. This means that the
first list item is another list. In fact you seem to have a list of single
item lists like
[["foo"], ["bar"], ...]
when you need
["foo", "bar", ...]
Of course join will fail with that:
>>> "".join(["foo", "bar"])
'foobar'
>>> "".join([["foo"], ["bar"]])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, list found
I think the error message is pretty clear ;)
Have a look into your my_transfer() function to find out why it returns a
list (or show us the code).
More information about the Tutor
mailing list