Francesco Bochicchio wrote:
imageguy ha scritto:You could try the same algorithm on an array.array object : it might be faster.I am looking for the most efficient method of replacing a repeating sequence in a byte string returned from a imaging .dll, connected viaI receive the byte string with the following sequence 'bgrbgrbgrbgr' and I would like to convert this to 'rbgrbgrbgrbg' FWIW, the string is created using ctypes.create_string_buffer function The following code works but feels a bit clunk and is rather slow too. blist = list(buffer) for start in xrange(0,len(blist), 3): try: blue = blist[start] red = blist[start+2] blist[start] = red blist[start+2] = blue except IndexError: pass new_buffer = ''.join(blist) new_buffer is then passed to a wx program to create and image. Any thoughts comments would be appreciated. geoff. PS: I started this post earlier, but I think I hit the send button too soon. My apologies to the group for sloppy typing.
>>> s = "012345678"
>>> from array import array
>>> a = array("b", s)
>>> a
array('b', [48, 49, 50, 51, 52, 53, 54, 55, 56])
>>> a[0::3], a[2::3] = a[2::3], a[0::3]
>>> a
array('b', [50, 49, 48, 53, 52, 51, 56, 55, 54])
>>> a.tostring()
'210543876'
--
http://mail.python.org/mailman/listinfo/python-list
