On Tue, Sep 14, 2021 at 11:31:43AM +0400, m...@dyatkovskiy.com wrote:

> Thus I have collection of options and some of them are empty or None. 
> In order to get rendered command line options string I use “compress” 
> in conjunction with “join":
> 
> >>> opts = " ".join(compress(flags, flags))

Why do you (ab)use compress for that?

I understand that `compress(flags, flags)` has the effect of filtering 
for non-empty flags. But that's an obfuscated way to write it. Either of 
these would be more understandable:

* `filter(None, flags)`  # could also use bool instead of None

* `(flag for flag in flags if flag)`

especially the last, although heavy users of functional languages may 
prefer filter. But using compress with the same argument twice is just 
weird.

And also fragile. You can't use an iterator for the flags.

    >>> jin(iter(['a', 'b', '', 'c', 'd', 'e', 'f', '', 'g']))
    'a  d'


> I usually introduce alias for this:
> 
> >>> def jin(a: str, sep=“ “):
> >>>     return sep.join(compress(a, a))
> 
> And I found that I use it quite frequently.

The signature is wrong. `flags` is a list of string options. If you pass 
an actual string, you expand it with spaces:


    >>> jin('abc def')
    'a b c   d e f'


-- 
Steve
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/RPY7HJ4VIUL5PXRBBTCFT6AALXBLUUGF/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to