2017-12-03 8 views
1

私は短いストリングのリストと複数の長いストリングのリストを持っています。 短い文字列のリストを繰り返して、短い文字列のどれかがであることを確認したいと思います。特定のリストの項目をにします。リストのすべてのアイテムにサブストリングとして存在するリスト内のアイテムを見つける方法

short_str_list = [ "AGA"、 "TTT"、 "ACA"]

seq_list = [ "atcgcgtacat"、 "acatcgggattt"、 "tttacagtgtgtggg"]

もたらすはずである:例えば
: "aca"

誰かが私のためにpythonスクリプトを手伝ってもらえますか?

答えて

0

ブレイクの作品に問題がダウン。

def check_all(strings, seq): 
    result = [] 

    for string in strings: 
     if check_one(string, seq): 
      result.append(string) 

    return result 

def check_one(string, seqs): 
    for seq in seqs: 
     if string not in seq: 
      return False 
    return True 

はその後、この機能を使用することによりすべての文字列をチェックする機能を加えます。文字列は、文字列の順序である場合

は、チェック機能を作ることから始め

check_all()

short_str_list = ["aga", "ttt", "aca"] 
seq_list = ["atcgcgtacat", "acatcgggattt", "tttacagtgtgtggg"] 

print(check_all(short_str_list, seq_list)) 
# ['aca'] 

また、1つのラインでこれを行うにし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'] 
+0

ありがとう!それは素晴らしい作品です。 – Bella

0

次ダブルループ式はそれをしない:

print([ss 
     for ss in short_str_list 
     if all(ss in ls for ls in seq_list) 
     ]) 
関連する問題