Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从不同的集合生成序列_Python_List_Generator - Fatal编程技术网

Python 如何从不同的集合生成序列

Python 如何从不同的集合生成序列,python,list,generator,Python,List,Generator,我有一系列的元素,像这样: elements= { 'a' : '12345', 'b' : '67890', 'c' : 'abcdefg', 'd' : 'hijklmn', ... } 我想做的是有一个函数,它接受输出的定义,并返回上面集合中所有可能的字符组合,这些字符组合与该定义匹配 例如,如果函数接收到“abbc”,则它将返回所有字符串的集合,这些字符串包含集合a中的一个字符,后跟集合b中的一个字符,后跟集合b中的一个字符,后跟集合c中的一个字符 理想情况下,这将返回一个发

我有一系列的元素,像这样:

elements= {
 'a' : '12345',
 'b' : '67890',
 'c' : 'abcdefg',
 'd' : 'hijklmn',
 ...
}
我想做的是有一个函数,它接受输出的定义,并返回上面集合中所有可能的字符组合,这些字符组合与该定义匹配

例如,如果函数接收到
“abbc”
,则它将返回所有字符串的集合,这些字符串包含集合a中的一个字符,后跟集合b中的一个字符,后跟集合b中的一个字符,后跟集合c中的一个字符

理想情况下,这将返回一个发电机

我正在努力的是如何构建循环,循环遍历输入字符,从
元素中选择合适的集合,然后生成所有先前输入的所有组合

例如,如果我简单地循环输入,像这样,我如何得到下一个序列

for c in list(input):
    element_set = list(elements[c])
    #now I've got the list of elements for this character, but how do I combine all possible values here with all possible values for the next character?
我可以建立一个列表,在其中我可以得到以下结果:

[ list(elements[a]), list(elements[b]), list(elements[b]), list(elements[c]) ]

但是,如何获取“位置0的所有可能值”+“位置1的所有可能值”等?

您可以使用有助于此的:

>>> elements = {'a': '12', 'b': '67', 
                'c': 'ab', 'd': 'hi'} # shortened example; 875 answers otherwise!
>>> s = 'abbc'
>>> from itertools import product
>>> for t in product(*[elements[c] for c in s]):
    print t


('1', '6', '6', 'a')
('1', '6', '6', 'b')
('1', '6', '7', 'a')
('1', '6', '7', 'b')
('1', '7', '6', 'a')
('1', '7', '6', 'b')
('1', '7', '7', 'a')
('1', '7', '7', 'b')
('2', '6', '6', 'a')
('2', '6', '6', 'b')
('2', '6', '7', 'a')
('2', '6', '7', 'b')
('2', '7', '6', 'a')
('2', '7', '6', 'b')
('2', '7', '7', 'a')
('2', '7', '7', 'b')

您可以使用有助于实现此目的的:

>>> elements = {'a': '12', 'b': '67', 
                'c': 'ab', 'd': 'hi'} # shortened example; 875 answers otherwise!
>>> s = 'abbc'
>>> from itertools import product
>>> for t in product(*[elements[c] for c in s]):
    print t


('1', '6', '6', 'a')
('1', '6', '6', 'b')
('1', '6', '7', 'a')
('1', '6', '7', 'b')
('1', '7', '6', 'a')
('1', '7', '6', 'b')
('1', '7', '7', 'a')
('1', '7', '7', 'b')
('2', '6', '6', 'a')
('2', '6', '6', 'b')
('2', '6', '7', 'a')
('2', '6', '7', 'b')
('2', '7', '6', 'a')
('2', '7', '6', 'b')
('2', '7', '7', 'a')
('2', '7', '7', 'b')

您可以使用有助于实现此目的的:

>>> elements = {'a': '12', 'b': '67', 
                'c': 'ab', 'd': 'hi'} # shortened example; 875 answers otherwise!
>>> s = 'abbc'
>>> from itertools import product
>>> for t in product(*[elements[c] for c in s]):
    print t


('1', '6', '6', 'a')
('1', '6', '6', 'b')
('1', '6', '7', 'a')
('1', '6', '7', 'b')
('1', '7', '6', 'a')
('1', '7', '6', 'b')
('1', '7', '7', 'a')
('1', '7', '7', 'b')
('2', '6', '6', 'a')
('2', '6', '6', 'b')
('2', '6', '7', 'a')
('2', '6', '7', 'b')
('2', '7', '6', 'a')
('2', '7', '6', 'b')
('2', '7', '7', 'a')
('2', '7', '7', 'b')

您可以使用有助于实现此目的的:

>>> elements = {'a': '12', 'b': '67', 
                'c': 'ab', 'd': 'hi'} # shortened example; 875 answers otherwise!
>>> s = 'abbc'
>>> from itertools import product
>>> for t in product(*[elements[c] for c in s]):
    print t


('1', '6', '6', 'a')
('1', '6', '6', 'b')
('1', '6', '7', 'a')
('1', '6', '7', 'b')
('1', '7', '6', 'a')
('1', '7', '6', 'b')
('1', '7', '7', 'a')
('1', '7', '7', 'b')
('2', '6', '6', 'a')
('2', '6', '6', 'b')
('2', '6', '7', 'a')
('2', '6', '7', 'b')
('2', '7', '6', 'a')
('2', '7', '6', 'b')
('2', '7', '7', 'a')
('2', '7', '7', 'b')

我甚至研究过itertools。但是,我当然错过了这个。现在我觉得自己很傻,哈哈。我甚至还看过itertools。但是,我当然错过了这个。现在我觉得自己很傻,哈哈。我甚至还看过itertools。但是,我当然错过了这个。现在我觉得自己很傻,哈哈。我甚至还看过itertools。但是,我当然错过了这个。现在我觉得自己很傻,哈哈。