Let's suppose i have 2 bigs arrays (i have put smaller arrays in this example):
a1=bytes([10,20,30,40,50,60,70,80])
a2=bytes([11,21,31,41,51,61,71,81])
What i want to do is to merge this 2 arrays this way:
[10,20 , 11,21 , 30,40 , 31,41 , ...
What i want is to take 2 bytes from first array, then 2 from second array, etc.
Here is what i done. It works but i think there is a best way to do this, without having to create intermediates arrays:
a3 = bytearray()
for i in range(0, len(a1), 2):
a3.append(a1[i])
a3.append(a1[i+1])
a3.append(b1[i])
a3.append(b1[i+1])
output_array=bytes(a3) # Very important: i need bytes() object at the end
Chunk taken from here: How do you split a list into evenly sized chunks?
Merge taken from here: How do I merge two lists into a single list?
Combined into this:
def chunks(l, n):
"""Yield successive n-sized chunks from l."""
for i in range(0, len(l), n):
yield l[i:i + n]
a1 = [10,20,30,40,50,60,70,80]
b1 = [11,21,31,41,51,61,71,81]
combined = [j for i in zip(chunks(a1, 2),chunks(b1, 2)) for j in i]
out = bytes(bytearray([x for pair in combined for x in pair]))
==> b'\n\x14\x0b\x15\x1e(\x1f)2<3=FPGQ'
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments