Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.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/4/matlab/16.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
Itertools Python_Python_Itertools - Fatal编程技术网

Itertools Python

Itertools Python,python,itertools,Python,Itertools,是否有任何方法可以使用itertools产品函数,该函数会一步一步返回列表的每个组合 例如: itertools.product(*mylist) ->解决方案应该返回列表的第一个组合,然后第二个组合等。正如@ggorlen所解释的,itertools.product(…)返回一个。例如,如果你有 import itertools mylist = [('Hello','Hi'),('Andy','Betty')] iterator = itertools.product(*mylist) n

是否有任何方法可以使用itertools产品函数,该函数会一步一步返回列表的每个组合

例如:
itertools.product(*mylist)

->解决方案应该返回列表的第一个组合,然后第二个组合等。

正如@ggorlen所解释的,
itertools.product(…)
返回一个。例如,如果你有

import itertools
mylist = [('Hello','Hi'),('Andy','Betty')]
iterator = itertools.product(*mylist)
next(迭代器)
iterator.\uuuu next\uuuu()
将在您第一次调用它们时计算为
“Hello Andy”
。当您下次调用
next(iterator)
时,它将返回
'Hello Betty'
,然后返回
'Hi Andy'
,最后返回
'Hi Betty'
,然后引发
停止迭代
错误

如果您对
列表
更熟悉,您还可以使用
列表(迭代器)
迭代器
转换为
列表
,但是如果您只需要前几个值,并且
mylist
很大,这将非常低效,并且可能值得花时间熟悉迭代器

请考虑一下,你是否真的只是迭代了<代码>迭代器< /代码>。如果是这样,就使用

for combination in iterator:
    pass # Body of loop
即使您只需要第一个
n
元素,并且
n
很大,您也可以使用

for combination in itertools.islice(iterator, n):
    pass # Body of loop

正如@ggorlen所解释的,
itertools.product(…)
返回一个。例如,如果你有

import itertools
mylist = [('Hello','Hi'),('Andy','Betty')]
iterator = itertools.product(*mylist)
next(迭代器)
iterator.\uuuu next\uuuu()
将在您第一次调用它们时计算为
“Hello Andy”
。当您下次调用
next(iterator)
时,它将返回
'Hello Betty'
,然后返回
'Hi Andy'
,最后返回
'Hi Betty'
,然后引发
停止迭代
错误

如果您对
列表
更熟悉,您还可以使用
列表(迭代器)
迭代器
转换为
列表
,但是如果您只需要前几个值,并且
mylist
很大,这将非常低效,并且可能值得花时间熟悉迭代器

请考虑一下,你是否真的只是迭代了<代码>迭代器< /代码>。如果是这样,就使用

for combination in iterator:
    pass # Body of loop
即使您只需要第一个
n
元素,并且
n
很大,您也可以使用

for combination in itertools.islice(iterator, n):
    pass # Body of loop

您能否提供示例输入和预期输出?如果没有itAll
itertools
函数返回迭代器,我们可以猜测您的意思,因此您可以说
It=itertools.product(我的列表)
并调用
It.next()
以获取迭代器中的下一项。哇——我的意思是
next(It)
。您能提供一个示例输入和预期输出吗?如果没有itAll
itertools
函数返回迭代器,我们可以猜测你的意思,因此你可以说
It=itertools.product(我的列表)
,然后调用
It.next()
来获取迭代器中的下一项。哎呀——我的意思是
next(It)