python 動態列表 python 遍歷動態列表

2021-10-19 20:25:18 字數 2834 閱讀 6590

我要從一組序列(字串)中生成乙個子集字典,其中每個序列都代表乙個鍵,並且值應該是在「匹配」(例如1)位置最多匹配的所有序列,都與原始序列(鍵),以及當時子集中的所有值條目。

例如,考慮由「 a」,「 c」,「 g」和「 t」組成的所有長度為3的序列,其中乙個鍵值對應該是(或可以是,因為有更多可能的方法來選擇一套)。

這是我想出的定義:

def pick(seq,superset):

subset = [seq]

for seq in subset:

count = 0

for item in superset:

if len([i for i, j in zip(list(seq),list(item)) if i==j])==match:

count += 1

if len(subset)==count:

subset += [''.join(item)]

return subset

我得到的是:

我想要的是:

我遇到的問題是,我現在僅生成乙個子集,其中值與鍵的匹配不超過乙個位置,但是值序列的確與該子集中的其他值具有多個特定匹配的位置。有人對此問題有解決方案嗎?

解決方案

我將您的問題解釋為:「我想獲取所有專案的列表,這些專案的字元superset之間在0到之間,並且具有match匹配的字元seq。但是現在,我的函式返回了所有具有完全 match匹配的字元的專案的列表。也是返回的列表等於seq,我不希望這樣。」

def pick(seq,superset,match):

subset =

for item in superset:

if len([i for i, j in zip(list(seq),list(item)) if i==j])<=match:

return subset

superset = [

'ggg', 'ggc', 'gga', 'ggt', 'gcg', 'gcc', 'gca', 'gct', 'gag', 'gac', 'gaa', 'gat', 'gtg', 'gtc', 'gta', 'gtt',

'cgg', 'cgc', 'cga', 'cgt', 'ccg', 'ccc', 'cca', 'cct', 'cag', 'cac', 'caa', 'cat', 'ctg', 'ctc', 'cta', 'ctt',

'agg', 'agc', 'aga', 'agt', 'acg', 'acc', 'aca', 'act', 'aag', 'aac', 'aaa', 'aat', 'atg', 'atc', 'ata', 'att',

'tgg', 'tgc', 'tga', 'tgt', 'tcg', 'tcc', 'tca', 'tct', 'tag', 'tac', 'taa', 'tat', 'ttg', 'ttc', 'tta', 'ttt'

seq = "aaa"

print pick(seq, superset, 1)

結果(為清楚起見,我新增了換行符):

['ggg', 'ggc', 'gga', 'ggt', 'gcg', 'gcc', 'gca', 'gct', 'gag', 'gac', 'gat', 'gtg', 'gtc', 'gta', 'gtt',

'cgg', 'cgc', 'cga', 'cgt', 'ccg', 'ccc', 'cca', 'cct', 'cag', 'cac', 'cat', 'ctg', 'ctc', 'cta', 'ctt',

'agg', 'agc', 'agt', 'acg', 'acc', 'act', 'atg', 'atc', 'att',

'tgg', 'tgc', 'tga', 'tgt', 'tcg', 'tcc', 'tca', 'tct', 'tag', 'tac', 'tat', 'ttg', 'ttc', 'tta', 'ttt']

def similarity(a,b):

return sum(1 for p,q in zip(a,b) if p==q)

def pick(seq, superset, match):

subset =

for item in superset:

if similarity(item, seq) <= match and all(similarity(item, x) <= match for x in subset):

return subset

superset = [

'ggg', 'ggc', 'gga', 'ggt', 'gcg', 'gcc', 'gca', 'gct', 'gag', 'gac', 'gaa', 'gat', 'gtg', 'gtc', 'gta', 'gtt',

'cgg', 'cgc', 'cga', 'cgt', 'ccg', 'ccc', 'cca', 'cct', 'cag', 'cac', 'caa', 'cat', 'ctg', 'ctc', 'cta', 'ctt',

'agg', 'agc', 'aga', 'agt', 'acg', 'acc', 'aca', 'act', 'aag', 'aac', 'aaa', 'aat', 'atg', 'atc', 'ata', 'att',

'tgg', 'tgc', 'tga', 'tgt', 'tcg', 'tcc', 'tca', 'tct', 'tag', 'tac', 'taa', 'tat', 'ttg', 'ttc', 'tta', 'ttt'

seq = "aaa"

print pick(seq, superset, 1)

結果:['ggg', 'gcc', 'gat', 'gta', 'cgc', 'ccg', 'ctt', 'agt', 'atg', 'tga', 'tct', 'tag', 'ttc']

python是高階動態程式語言 Python語言

python是一門跨平台 開源 免費的解釋型高階動態程式語言。python支援命令式程式設計 how to do 函式式程式設計 what to do 完全支援物件導向程式設計,擁有大量擴充套件庫。膠水語言 可以把多種不同語言編寫的程式融合到一起實現無縫拼接,更好地發揮不同語言和工具的優勢,滿足不同...

Python學習筆記 1 1 2 認識Python

一.課程目標 二.詳情解讀 1.初識pythonpython語言是一種高階程式語言,它於1991年由吉多.範羅蘇姆 guido van rossum 發明。目前主要應用於web開發 gui開發 網路爬蟲 資料科學 人工智慧等領域。python官方 python語言也是一種多正規化程式語言,即物件導向...

python實現演算法 kmp演算法python實現

kmp演算法python實現 kmp演算法 kmp演算法用於字串的模式匹配,也就是找到模式字串在目標字串的第一次出現的位置 比如abababc 那麼bab在其位置1處,bc在其位置5處 我們首先想到的最簡單的辦法就是蠻力的乙個字元乙個字元的匹配,但那樣的時間複雜度會是o m n kmp演算法保證了時...