You can use list comprehension for this, but it's a bit complicated.
First you can iterate through each value in Paths, as i:
[i for i in Paths...]
But then you need to check if a value from str1 or str2 exists in i, these can be done with more list comprehension as below (not these lines will not work on their own unless you define i to test:
[j for j in str1 if j in i]
[k for k in str2 if k in i]
The above will return a list of the characters from each str that exist in i. A useful thing in python is that an empty list will automatically evaluate to False, and a populated one will evaluate to True, so you just need to put these comprehensions into the first one, after an if statement:
out = [i for i in Paths if [j for j in str1 if j in i] and [k for k in str2 if k in i]]
print(out)
['de04']
Although the below replaces i,j and k to be a bit more readable:
[path for path in Paths if [elem1 for elem1 in str1 if elem1 in path] and [elem2 for elem2 in str2 if elem2 in path]]
This code basically does the same as below, but in a single line. I have included the below to help with understanding:
out = []
for i in Paths:
list1 = []
for j in str1:
if j in i:
list1.append(j)
list2 = []
for k in str2:
if k in i:
list2.append(k)
if list1 and list2:
out.append(i)