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'>
なぜタプルとして保存されるのですか?
それが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)
)何もループしたり、潜在的に膨大な量のデータをどこにでも格納したりしません。すべての組み合わせを一度にメモリに保存する必要はない場合があるため、すべてを保存せずに、それぞれを繰り返し処理する方がよい場合があります(特定の組み合わせを検索したり、次の行に1行ずつ書き込んだりする場合)。ファイル)。
すべての組み合わせをメモリに保存する必要がある場合はcombo_all
、リストに変換します。
combo_all = list(combo_all)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加