我有一个包含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'>
答案 0 :(得分:1)
为什么将它们存储为元组?
因为这就是driver.switchTo().frame(3);
模块的实现方式。 itertools
,itertools.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