To just test for presence of a sub string in any of the strings in the list, you can use any:
>>> li = ['potatoechips','icecream','donuts']
>>> s="potatoe"
>>> any(s in e for e in li)
True
>>> s="not in li"
>>> any(s in e for e in li)
False
The advantage is any will break on the first True and can be more efficient if the list is long.
You can also join the list together into a string separated by a delimiter:
>>> s in '|'.join(li)
True
The advantage here would be if you have many tests. in for millions of tests is faster than constructing millions of comprehensions for example.
If you want to know which string has the positive, you can use a list comprehension with the index of the string in the list:
>>> li = ['potatoechips','icecream','donuts', 'potatoehash']
>>> s="potatoe"
>>> [(i,e) for i, e in enumerate(li) if s in e]
[(0, 'potatoechips'), (3, 'potatoehash')]
Or, you can use filter if you just want the strings as an alternative:
>>> filter(lambda e: s in e, li)
['potatoechips', 'potatoehash']