我是一名分子生物学家,也是编程新手,所以请原谅我的语言。我正在使用python。
示例:
string = "gctatagcgttatatactagcctatagctata"
list = ["gtagctaggac", "mptalltruiworw", "12365478995", "nvncmvncmvncmvn"]
现在开始质疑了 我想知道一种可以发现
的方法for element in list:
if element is subset of string (in any order)
return element
在上面的例子中,答案应该是
gtagctaggac
答案 0 :(得分:0)
不是花时间生成排列,而是比较list元素和字符串中的字母数。请注意,此代码不会检查字符串中不在模式中的字母。
string = "gctatagcgttatatactagcctatagctata"
list = ["gtagctaggac", "mptalltruiworw", "12365478995", "nvncmvncmvncmvn"]
from collections import defaultdict
def count_letters(string):
counts = defaultdict(int)
for letter in string:
counts[letter] += 1
return counts
sc = count_letters(string)
for element in list:
counts = count_letters(element)
if all([sc[letter] >= counts[letter] for letter in counts]):
print "Found", element
作为一种风格问题,最好不要使用“list”和“string”等内置类的名称。