1
または0
の値を持ち、長さが1024のリストがあります。指定された2つのリストがすべてのインデックスで重複する回数を検索したいそれらが値== 1と一致すれば)、しかし比較の数を低く保つ方法を考えるように見えない。現在、私のアプローチは、値が== 1の私のリストのすべてのインデックスを取得し、2つのリストの交点を得ることです。インデックスの重複回数を取得する
#for each list, do the following
for x,j in enumerate(list1):
if j == 1:
idx_list.append(x)
# compare two lists
num_overlap = set(idx_list1).intersection(idx_list2)
この値を見つけるのが最も効率的な方法ですか?例えば、入力/出力のため
(のみ代わり1024 6つの値を示す):
list1 = [1 0 1 0 0 0]
list2 = [1 0 0 0 0 0]
num_overlap = 1 (both lists have ```1``` at index 0)
ほんのわかりやすいバージョン(個人的に): 'sum(xとyはx、yはzip(list1、list2))'です。 – SuperSaiyan
合意。また、私はジェネレータの表現がマップよりも実際に速いと信じています。 – idjaw
リストが2つしかない場合、 'xとy'はおそらく速いでしょう。 –