You don't. Don't use any()
if you want to enumerate all the matching items. The name item
only exists in the scope of the generator expression passed to any()
, all you get back from the function is True
or False
. The items that matched are no longer available.
Just loop directly over the list and test each in an if
test:
for item in lst:
if ".git" in item:
print item,
or use a list comprehension, passing it to str.join()
(this is faster than a generator expression in this specific case):
print ' '.join([item for item in list if ".git" in item])
or, using Python 3 syntax:
from __future__ import print_function
print(*(item for item in list if ".git" in item))
If you wanted to find just the first such a match, you can use next()
:
first_match = next(item for item in list if ".git" in item)
Note that this raises StopIteration
if there are no such matches, unless you give next()
a default value instead:
first_match = next((item for item in list if ".git" in item), None)
if first_match is not None:
print first_match,