【发布时间】:2019-09-28 03:33:19
【问题描述】:
我有一个列表列表:
x = [[AATG, ATAT, GGCC],
[CCTA, TCGT, AAAA],
[TTAA, GGAT, TACA]]
列表中的字符仅是 ATCG 的组合,列表中的每个元素的长度为四个字符。内部列表的长度相等。
我想估计只有 A 和 T 的所有组合的元素的频率;例如每列中的ATAT(第一行第二列)、AAAA(第二行第三列)和TTAA(第三行第一列)。
为了调用 A 和 T 的所有组合,我使用了正则表达式:
pattern = re.findall('[AT]{4}', key)
用于阅读列表列表
y = []
for i in range(len(x[0])):
per.append(len([j[i] for j in x if j[i]==pattern])/len(x))
print(y)
如果我使用像“ATAT”这样的特定字符串,则此代码有效:
y = []
for i in range(len(x[0])):
per.append(len([j[i] for j in x if j[i]=='ATAT'])/len(x))
print(y)
但它不适用于带有正则表达式的模式。可以是 re.findall 可以调用的任何东西,例如:
'[CG]{4}' for all element has C or G
'^(?=[GC]*[AT][GC]*$).{4}$' for 75% of element has G or C
预期输出:
[0.34, 0.34, 0.34]
【问题讨论】:
标签: python regex list dictionary