我正在尝试编写一个脚本来计算所有可能的模糊字符串匹配匹配到一个短字符串或“kmer”,并且在 Python 2.7.X 中工作的相同代码给了我一个关于 Python 3.3 的非确定性答案.X,我不知道为什么。
我在我的代码中遍历字典、itertools.product 和 itertools.combinations,但我遍历所有这些以完成,没有中断或继续。此外,我将所有结果存储在单独的字典中,而不是我正在迭代的字典中。简而言之 - 我没有犯任何对我来说很明显的错误,那么为什么 Python2 和 Python3 之间的行为不同呢?
示例,稍微简化的代码如下:
import itertools
def find_best_fuzzy_kmer( kmers ):
for kmer, value in kmers.items():
for similar_kmer in permute_string( kmer, m ):
# Tabulate Kmer
def permute_string( query, m ):
query_list = list(query)
output = set() # hold output
for i in range(m+1):
# pre-calculate the possible combinations of new bases
base_combinations = list(itertools.product('AGCT', repeat=i))
# for each combination `idx` in idxs, replace str[idx]
for positions in itertools.combinations(range(len(query_list)), i):
for bases in base_combinations:
# Generate Permutations and add to output
return output