Python itertools组合长度

时间:2015-08-03 22:46:21

标签: python combinations itertools

非常感谢有关此练习问题的任何意见:

给定长度为n和整数k的字符串,在k< = {的约束下打印长度为1(打印nCk)的所有可能组合{1}}< = k。你可以假设没有重复的字符

示例:

  

abc,2 - > ab,bc,ca

     

abc,1 - > a,b,c

     

abc,3 - > ABC

2 个答案:

答案 0 :(得分:1)

select dogType, 
       sum(case when agLevel = 1 then total else 0 end) as ag1,
       sum(case when agLevel = 2 then total else 0 end) as ag2,
       sum(case when agLevel = 3 then total else 0 end) as ag3
from dogs
group by dogType

答案 1 :(得分:0)

感谢Rain的回答,效果很好。

答案:

import itertools

def func(data, r):
    return ["".join(x) for x in itertools.combinations(data, r)]

print(func('abc', 2))
print(func('abc', 1))
print(func('abc', 3))

输出:

['ab', 'ac', 'bc']
['a', 'b', 'c']
['abc']

注意:

itertools.combinations(iterable,r)

从输入迭代中返回元素的r长度子序列。

组合以字典排序顺序发出。因此,如果对输入iterable进行排序,则组合元组将按排序顺序生成