计算python中列表的每个序列中元素的出现次数

时间:2016-10-13 12:24:39

标签: python

我有一个(非常大的)列表,就像小例子一样。我想计算列表中每个序列中D的数量,并除以该序列的长度。 (每个序列中出现D)。

小例子:

l = ['MLSLLLLDLLGLG', 'MEPPQETNRPFSTLDD', 'MVDLSVSPDVPKPAVI', 'XNLMNAIMGSDDDG', 'MDRAPTEQNDDVKLSAE']
你知道怎么做吗?

3 个答案:

答案 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)