将问题分解为多个部分。
首先创建一个检查一个字符串是否在字符串序列中的函数:
def check_one(string, seqs):
for seq in seqs:
if string not in seq:
return False
return True
然后使用该函数创建一个检查所有字符串的函数:
def check_all(strings, seq):
result = []
for string in strings:
if check_one(string, seq):
result.append(string)
return result
然后直接拨打check_all():
short_str_list = ["aga", "ttt", "aca"]
seq_list = ["atcgcgtacat", "acatcgggattt", "tttacagtgtgtggg"]
print(check_all(short_str_list, seq_list))
# ['aca']
您还可以使用 all() 、 filter() 和列表推导在一行中执行此操作:
print([x for x in short_str_list if all(x in y for y in seq_list)])
# ['aca']
print(list(filter(lambda x: all(x in y for y in seq_list), short_str_list)))
# ['aca']