返回元素在with循环列表中出现的次数。蟒蛇

时间:2017-03-24 03:48:50

标签: python loops for-loop

DNA = [a,t,g,c] 



 lis = []

    for a in DNA:
        for t in DNA:
            for g in DNA:
                for c in DNA:  
                   lis.append([a,t,g,c])

所以我创建了这个for循环,其中包含字符串'a','t','g','c'的所有可能组合,它返回所有256个组合。

我在下面创建了另一个for循环,它应该计算所有'g'字符串,它应该返回256的四分之一,但它不会这样做。它改为再次返回256,这是'a','t','g','c'字符串组合的总量。当我将下面的代码运行到列表中时我 创建如

created_DNA_to_check_code = ['a','g','t','a','g','g']

它返回适当数量的'g'字符串,这是3,所以我不知道为什么它在使用上面的for循环运行时不能正常工作。任何帮助将不胜感激

def G():
    total = 0
    for g in lis:
        for itr in g: 
            if itr == 'g':

                total += 1
    return total
print(G())

1 个答案:

答案 0 :(得分:3)

您正在计算所有字符串中g的数量,因此['g','g','g','g']会将4添加到您的总数中,这不足为奇256

>>> import itertools as it
>>> DNA = ['a','g','t','c']
>>> dna = list(it.product(DNA, repeat=4))
>>> len(dna)
256
>>> sum(len(d) for d in dna)
1024
>>> sum(g.count('g') for g in dna)
256
>>> sum(1 for g in dna if 'g' in g)
175

256是字符串总数的1024的四分之一。