我正在尝试编写一个脚本来计算所有可能的模糊字符串匹配匹配到一个短字符串,或'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 …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Fsharp中实现一个基本的红/黑树,基于公共代码(http://en.wikibooks.org/wiki/F_Sharp_Programming/Advanced_Data_Structures)
但是我在编译时遇到了最终签名的问题:
type 'a BinaryTree(inner : 'a tree) =
member this.head = Tree.head inner
member this.left = BinaryTree(Tree.left inner)
member this.right = BinaryTree(Tree.right inner)
member this.exists item = Tree.exists item inner
member this.insert item = BinaryTree(Tree.insert item inner)
member this.print() = Tree.print 0 inner
static member empty = BinaryTree<'a>(E)
Run Code Online (Sandbox Code Playgroud)
具体来说,它给了我一个错误,"一个类型参数缺少一个约束'a when:comparison'"但是我尝试添加它的每件事都没有用.我错过了什么?