Check for regular expression in a list

Rustom Mody rustompmody at gmail.com
Fri May 26 08:40:37 EDT 2017


On Friday, May 26, 2017 at 5:55:32 PM UTC+5:30, Jussi Piitulainen wrote:
> Rustom Mody writes:
> 
> > On Friday, May 26, 2017 at 5:02:55 PM UTC+5:30, Cecil Westerhof wrote:
> >> To check if Firefox is running I use:
> >>     if not 'firefox' in [i.name() for i in list(process_iter())]:
> >> 
> >> It probably could be made more efficient, because it can stop when it
> >> finds the first instance.
> >> 
> >> But know I switched to Debian and there firefox is called firefox-esr.
> >> So I should use:
> >>     re.search('^firefox', 'firefox-esr')
> >> 
> >> Is there a way to rewrite
> >>     [i.name() for i in list(process_iter())]
> >> 
> >> so that it returns True when there is a i.name() that matches and
> >> False otherwise?
> >> And is it possible to stop processing the list when it found a match?
> >
> > 'in' operator is lazily evaluated if its rhs is an iterable (it looks)
> > So I expect you can replace
> > if not 'firefox' in [i.name() for i in list(process_iter())]:
> > with
> > if not 'firefox' in (i.name() for i in list(process_iter())]):
> 
> Surely that should be:
> 
>     if not 'firefox' in (i.name() for i in process_iter()):
> 
> And that again should be:
> 
>     if any((i.name() == 'firefox') for i in process_iter()):
> 
> Which can then be made into:
> 
>     if any(i.name().startswith('firefox') for i in process_iter()):
> 

Nice — Thanks!



More information about the Python-list mailing list