テーブルルックアップからの int の反復子があり、それらのマルチセットが特定の固定 "マルチセット" に含まれているかどうかを確認する必要がありますms
。現在、ms
最初に並べ替えてから、イテレータで int を並べ替え、次のように (並べ替えられたリストの) マルチセットの包含を確認します。
vals = sorted(my_vals)
for it in ... :
test_vals = sorted( i for i in it )
if is_sublist(test_vals,vals):
# do stuff
どこ
def is_sublist(L1,L2):
m = len(L1)
n = len(L2)
i = j = 0
while j <= n:
if i == m:
return True
elif j == n:
return False
a,b = L1[i], L2[j]
if a == b:
i += 1
j+= 1
elif a > b:
j += 1
else:
return False
- 通常、私のリストはかなり短い (1 ~ 20 要素)
- を使ってみた
Counter
のですが、封じ込め試験の時間的アドバンテージよりも、初期化の時間的アドバンテージの方が悪いです。 - 私はこれを ~10^6 回行うので、おそらく 1 回で行う必要があります
cython
どんなアイデアや指針もいいでしょう - ありがとう!(早々に投稿ボタン押しちゃってすみません…)