Okay, I am a complete newbie to Python - and stackoverflow. I am coming from a ksh and Perl background.
The following in an interactive session with Python 2.7:
As per the documentation, filter
in Python 3.x returns an iterator, rather than a list as in version 2.x. This is more memory-efficient than generating the whole list up-front. If you want the list back, you can wrap the iterator in a list()
call:
VALIDVALUES = list(filter(...))
Alternatively, and as recommended by What’s New In Python 3.0, you could rewrite it as a list comprehension without a lambda
:
VALIDVALUES = [x for x in [...] if re.search(r'^' + KEY + '\=', x)]