Good Python style?

Virgil Dupras hardcoded.software at gmail.com
Thu May 31 06:45:25 EDT 2007


On May 31, 3:59 am, Andreas Beyer <m... at a-beyer.de> wrote:
> Hi,
>
> I found the following quite cryptic code, which basically reads the
> first column of some_file into a set.
> In Python I am used to seeing much more verbose/explicit code. However,
> the example below _may_ actually be faster than the usual "for line in ..."
> Do you consider this code good Python style? Or would you recommend to
> refrain from such complex single-line code??
>
> Thanks!
> Andreas
>
> inp = resource(some_file)
> # read first entries of all non-empty lines into a set
> some_set = frozenset([line.split()[0] for line in \
>           filter(None, [ln.strip() for ln in inp])])

I think it would be more readable if you would take the filter out of
the list comprehension, and the list comprehension out of the set.

inp = resource(some_file)
stripped_lines = (ln.strip() for ln in inp)
splitted_lines = (line.split()[0] for line in stripped_lines if line)
some_set = frozenset(splitted_lines)




More information about the Python-list mailing list