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())
答案 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
的四分之一。