从python中给定的字符列表生成所有字符串组合

从python中给定的字符列表生成所有字符串组合,python,python-3.x,Python,Python 3.x,我想生成给定长度的给定字符列表的所有可能组合,并排除一些组合。例如,如果我有以下列表: chars=['a','b','c','1','2'] 现在我想排除一行中超过2个字符的字符组合,这样就不可能出现像aaaaaa或111111这样的组合。我还希望输出是一个给定的长度,例如,5个字符。这可能吗?我想到了itertools 提前感谢您的帮助。这不是OP想要的。阅读整个问题。是的,对不起。更正了谢谢,但这不适用于像21ccb或11abc这样的组合,对吗?如果是的话,是否也可以加上这个?或者说,你最

我想生成给定长度的给定字符列表的所有可能组合,并排除一些组合。例如,如果我有以下列表:
chars=['a','b','c','1','2']
现在我想排除一行中超过2个字符的字符组合,这样就不可能出现像
aaaaaa
111111
这样的组合。我还希望输出是一个给定的长度,例如,5个字符。这可能吗?我想到了
itertools

提前感谢您的帮助。

这不是OP想要的。阅读整个问题。是的,对不起。更正了谢谢,但这不适用于像
21ccb
11abc
这样的组合,对吗?如果是的话,是否也可以加上这个?或者说,你最多能容忍多少次重复?我想如果我不想要任何东西,我希望每个输出最多2次重复一个字符。如果可能的话。当您尝试使用在
itertools
中找到的函数时发生了什么?了解itertools和set。你知道什么是组合和排列吗?先学这个。
import itertools

chars = ['a', 'b', 'c', '1', '2']

for combination in itertools.product(chars, repeat = 5):
    if all(combination.count(x) < 3 for x in combination):
        print (combination)
('c', '1', '1', '2', 'c')
('c', '1', '1', '2', '2')
('c', '1', '2', 'a', 'a')
('c', '1', '2', 'a', 'b')
('c', '1', '2', 'a', 'c')
('c', '1', '2', 'a', '1')
('c', '1', '2', 'a', '2')
('c', '1', '2', 'b', 'a')
('c', '1', '2', 'b', 'b')
('c', '1', '2', 'b', 'c')
('c', '1', '2', 'b', '1')
('c', '1', '2', 'b', '2')
('c', '1', '2', 'c', 'a')
('c', '1', '2', 'c', 'b')
('c', '1', '2', 'c', '1')
('c', '1', '2', 'c', '2')
('c', '1', '2', '1', 'a')
('c', '1', '2', '1', 'b')
('c', '1', '2', '1', 'c')
('c', '1', '2', '1', '2')
('c', '1', '2', '2', 'a')
('c', '1', '2', '2', 'b')
('c', '1', '2', '2', 'c')
('c', '1', '2', '2', '1')
('c', '2', 'a', 'a', 'b')
('c', '2', 'a', 'a', 'c')
('c', '2', 'a', 'a', '1')
('c', '2', 'a', 'a', '2')
('c', '2', 'a', 'b', 'a')
('c', '2', 'a', 'b', 'b')
('c', '2', 'a', 'b', 'c')
('c', '2', 'a', 'b', '1')
('c', '2', 'a', 'b', '2')
('c', '2', 'a', 'c', 'a')
('c', '2', 'a', 'c', 'b')
('c', '2', 'a', 'c', '1')
('c', '2', 'a', 'c', '2')
('c', '2', 'a', '1', 'a')
('c', '2', 'a', '1', 'b')
('c', '2', 'a', '1', 'c')
('c', '2', 'a', '1', '1')
('c', '2', 'a', '1', '2')
('c', '2', 'a', '2', 'a')
('c', '2', 'a', '2', 'b')
('c', '2', 'a', '2', 'c')
('c', '2', 'a', '2', '1')
('c', '2', 'b', 'a', 'a')
('c', '2', 'b', 'a', 'b')
('c', '2', 'b', 'a', 'c')
('c', '2', 'b', 'a', '1')
('c', '2', 'b', 'a', '2')
('c', '2', 'b', 'b', 'a')
('c', '2', 'b', 'b', 'c')
('c', '2', 'b', 'b', '1')
('c', '2', 'b', 'b', '2')
('c', '2', 'b', 'c', 'a')
('c', '2', 'b', 'c', 'b')
('c', '2', 'b', 'c', '1')
('c', '2', 'b', 'c', '2')
('c', '2', 'b', '1', 'a')
('c', '2', 'b', '1', 'b')
('c', '2', 'b', '1', 'c')
('c', '2', 'b', '1', '1')
('c', '2', 'b', '1', '2')
('c', '2', 'b', '2', 'a')
('c', '2', 'b', '2', 'b')
('c', '2', 'b', '2', 'c')
('c', '2', 'b', '2', '1')
('c', '2', 'c', 'a', 'a')
('c', '2', 'c', 'a', 'b')
('c', '2', 'c', 'a', '1')
('c', '2', 'c', 'a', '2')
('c', '2', 'c', 'b', 'a')
('c', '2', 'c', 'b', 'b')
('c', '2', 'c', 'b', '1')
('c', '2', 'c', 'b', '2')
etc...