One approach is to iterate on the copy of list1 and remove the string from it if it contains a substring from list2
list1 = ['lunch time', 'sandwich shop', 'starts at noon','grocery store']
list2 = ['lunch','noon']
#Iterate on copy of list1
for item1 in list1[:]:
#If substring is present, remove string from list
for item2 in list2:
if item2 in item1:
list1.remove(item1)
print(list1)
Another approach is to find the matching substrings, and then subtract that result with the actual list
list1 = ['lunch time', 'sandwich shop', 'starts at noon','grocery store']
list2 = ['lunch','noon']
#List of strings where the substrings are contained
result = [item1 for item1 in list1 for item2 in list2 if item2 in item1 ]
#List of strings where the substrings are not contained, found by set difference between original list and the list above
print(list(set(list1) - set(result)))
The output will be the same in both cases as below
['grocery store', 'sandwich shop']