python - 迭代工具 Python
问题描述
有什么方法可以使用 itertools 产品功能,该功能逐步返回列表的每个组合?
例如:
itertools.product(*mylist)
-> 解决方案应该返回列表的第一个组合,然后是第二个等等。
解决方案
正如@ggorlen 所解释的,itertools.product(...)
返回一个迭代器。例如,如果您有
import itertools
mylist = [('Hello','Hi'),('Andy','Betty')]
iterator = itertools.product(*mylist)
next(iterator)
或者iterator.__next__()
将评估到'Hello Andy'
您第一次调用它们时,例如。当你下次调用时,它会在引发错误之前next(iterator)
返回'Hello Betty'
, then'Hi Andy'
和 finally 。'Hi Betty'
StopIteration
如果您对 a 更满意,您也可以将 a 转换iterator
为list
with ,但如果您只需要前几个值并且很大,那么这将非常低效,可能值得花时间熟悉迭代器。list(iterator)
list
mylist
请考虑您是否真的只是在迭代iterator
。如果是这样,只需使用
for combination in iterator:
pass # Body of loop
即使您只需要第一个n
元素并且n
很大,您也可以使用
for combination in itertools.islice(iterator, n):
pass # Body of loop
推荐阅读
- javascript - 反应受保护的路线
- android - 如何正确请求使用附近服务的权限?
- php - Laravel 在 DB where('week', $week) 和 where('user_id', $user_id) 中查找 id
- pyqt5 - QTableView中可调整大小的列标题在pyqt5中不起作用
- bots - Discord.py - 无法尝试/除了 403:用户不接受 DM
- python - 使用 python-dataframes 将 200 万行插入到 timscaldb
- c# - Unity 停止响应基于网格的顶点数
- azure-devops - 创建矩阵小部件
- jquery - 如果文件未上传,Jquery Validate 会出错
- image - 我该如何定位