Among other ways, you could use a list comprehension:
list1 = ["A blue car", "A blue bike", "A red bike"]
result = [item for item in list1 if wordNeeded in item]
print(result)
# ["A red bike"]
Alternatively, you could look into filter
in combination with a lambda
function:
result = filter(lambda x: wordNeeded in x, list1)
print(list(result))
The latter is more complicated in this case but yields the same result.
As for
exact words, you either need to split each item before (+eventually lowercase it):
wordNeeded = "blue"
list1 = ["A blue car", "A blue bike", "A red bike", "bluebells are cool."]
result = [item for item in list1
if any(wordNeeded.lower() == x.lower() for x in item.split())]
print(result)
# ['A blue car', 'A blue bike']
Or use a regular expression with word boundaries altogether:
import re
rx = re.compile(r'\b{}\b'.format(wordNeeded), flags=re.I)
result = [item for item in list1 if rx.search(item)]
print(result)