字符串之排列组合:
#递归方法实现全排列(转)
def getpwd(s, l):
if l == 1:
return [x for x in s]
else:
return [x+y for x in s for y in getpwd(s, l-1)]
s = '1234'
print getpwd(s, 4)
#itertools实现全排列
#比递归版本效率高, 但combinations仍有重复字符串
#k > 9 时memoryError了, 仍需改进
from itertools import combinations
def build_pattern(k):
u = ['A', 'T', 'C', 'G']
pattern_list = []
for i in range(k):
pattern_list.extend(u)
pattern_set = set()
pattern_set.update(["".join(i) for i in combinations(pattern_list, k)])
pattern_list = list(pattern_set)
return pattern_list
print(len(build_pattern(4)))