[Tutor] mapping/filtering a sequence
Martin A. Brown
martin at linux-ip.net
Sat Sep 5 16:45:29 CEST 2009
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
: I am doing some data massage, minor mapping and filtering really
: and i find that i have a lot of this kind of kludgy code:
:
: # -- -------------------------
: def filt_seq(inseq):
: out_list = []
: for item in inseq:
: # 38 needs to be mapped on to 34 as we don't have a 38 in our
: grid
: if item == 38:
: item = item - 4
: out_list.append(item)
: # We also don't have a 40, but we do have a 39. Map that
: sucka
: elif item == 40:
: item = item - 1
: out_list.append(item)
: # if we get values that fall in good places, just pass them
: on to the out seq
: else:
: out_list.append(item)
: return out_list
:
: # -- -------------------------
:
: To do some basic jiggering of some out of range off grid data.
:
: There has to be a better, more elegant, more flexible less brute
: force more pythonic way to do this kind of mapping no?
Have you discovered the map() builtin yet?
I would imagine that others on this list will have some even more
elegant and efficient solutions for you, but here's a possibility:
def filt_seq( thing ):
if thing == 38:
thing = thing - 4
elif thing == 40:
thing = thing - 1
return thing
l = [ 1, 17, 12, 38, 4, 40, 17, 19 ]
l = map( filt_seq, l )
Good luck,
- -Martin
- --
Martin A. Brown
http://linux-ip.net/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
Comment: pgf-0.72 (http://linux-ip.net/sw/pine-gpg-filter/)
iD8DBQFKonmNHEoZD1iZ+YcRAme7AKDqThvHP6+3xbzBg1p48rxmY21ztgCdFYnA
Z2YGRnW7HLm/1oroaCTmkgg=
=G9w5
-----END PGP SIGNATURE-----
More information about the Tutor
mailing list