如何使用itertools组合功能创建列表列表?

时间:2019-07-20 18:31:34

标签: python-3.x list itertools

我有一个包含1和0的列表。我想知道它们的所有可能组合,并将每个组合存储在列表中。 为什么将它们存储为元组,以及如何更改它们?

import itertools

bitcode = [0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1]

# print(len(bitcode))

listoflist = [[]]


combo_all = itertools.combinations_with_replacement(bitcode, 11)

for bitcode in combo_all:
    listoflist.append(bitcode)

# print(listoflist)
# print(len(listoflist))
# print(type(listoflist))
print(listoflist[-1])
print(type(listoflist[-1]))

(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
<class 'tuple'>

1 个答案:

答案 0 :(得分:1)

  

为什么将它们存储为元组?

因为这就是driver.switchTo().frame(3);模块的实现方式。 itertoolsitertools.product等产生元组。

  

如何更改?

将元组转换为列表:

itertools.combinations

上面的代码不会循环任何内容或在任何地方存储潜在的大量数据(与combo_all = itertools.combinations_with_replacement(bitcode, 11) combo_all = map(list, combo_all) # this doesn't iterate over `combo_all` 不同)。可能不必一次将所有所有组合存储在内存中,因此最好在不存储所有组合的情况下迭代它们中的每一个(以防您正在搜索特定组合)或将它们逐行写入文件中。

如果需要将所有组合存储在内存中,请将list(combo_all)转换为列表:

combo_all