我有一个(非常大的)列表,就像小例子一样。我想计算列表中每个序列中D的数量,并除以该序列的长度。 (每个序列中出现D)。
小例子:
l = ['MLSLLLLDLLGLG', 'MEPPQETNRPFSTLDD', 'MVDLSVSPDVPKPAVI', 'XNLMNAIMGSDDDG', 'MDRAPTEQNDDVKLSAE']
你知道怎么做吗?
答案 0 :(得分:1)
您可以简单地使用列表理解,在每个序列中获取D
的计数并除以序列的长度:
l = ['MLSLLLLDLLGLG', 'MEPPQETNRPFSTLDD', 'MVDLSVSPDVPKPAVI', 'XNLMNAIMGSDDDG', 'MDRAPTEQNDDVKLSAE']
result = [x.count('D')/len(x) for x in l]
print(result)
# [0.07692307692307693, 0.125, 0.125, 0.21428571428571427, 0.17647058823529413]
要处理零长度序列并避免使用ZeroDivisionError
,您可以使用三元运算符:
result = [(x.count('D')/len(x) if x else 0) for x in l]
答案 1 :(得分:1)
您可以使用列表理解来获得预期的结果。
我已经迭代了列表中的每个项目,对于列表中的每个项目,我计算了指定子字符串的出现次数(在这种情况下,' D' )。
最后,我将事件的数量除以项目的长度。
l = ['MLSLLLLDLLGLG', 'MEPPQETNRPFSTLDD', 'MVDLSVSPDVPKPAVI', 'XNLMNAIMGSDDDG', 'MDRAPTEQNDDVKLSAE']
output = [float(item.count("D")) / float(len(item)) for item in l]
答案 2 :(得分:0)
你正在寻找类似的东西:
def fn(x):
return x.count('D') / len(x)
results = ap(fn, l)