【发布时间】:2019-04-21 10:52:06
【问题描述】:
我有一个包含不同单词列表的二维列表。我有一组 12 个嵌套的 for 循环。我需要遍历 2D 列表中所有可能的元素组合,并对结果进行简单计算。
我最初使用 itertools.product() 函数执行此操作,然后对每个结果列表执行计算,但是 itertools.product() 调用的结果变得太大,我会用完内存。这意味着我需要在每次迭代后执行计算。
我的代码如下所示:
for word1 in possible_words[0]:
for word2 in possible_words[1]:
for word3 in possible_words[2]:
for word4 in possible_words[3]:
for word5 in possible_words[4]:
for word6 in possible_words[5]:
for word7 in possible_words[6]:
for word8 in possible_words[7]:
for word9 in possible_words[8]:
for word10 in possible_words[9]:
for word11 in possible_words[10]:
for word12 in possible_words[11]:
result = ' '.join([word1, word2, word3, word4, word5, word6, word7, word8, word9, word10, word11, word12])
if get_address(result) == desired_address:
return result
这段代码运行良好,可以满足我的需要。但是,我想知道是否有一种方法可以以更 Python 的方式将其浓缩?
【问题讨论】:
-
我很确定
itertools.product返回一个迭代器并且不会创建整个结果列表,所以应该没问题。
标签: python python-3.x loops for-loop nested