-1

(Python 3 を使用)

numList という名前のリストがあるとします: [1,1,2,2,3,3,3,4]。numList から「1」と「3」のインスタンスを 1 つだけ削除したいと考えています。つまり、numList を [1,2,2,3,3,4] に変換する関数が必要です。削除したい要素ごとに1回、PythonリストからX個の要素を削除できる関数は何ですか? (削除したい要素はリストに存在することが保証されています)

わかりやすくするために、さらに例を挙げます。

[1,2,3,3,4] 2 と 3 を削除 [1,3,4]

[3,3,3] 3 を削除 [3,3]

[1,1,2,2,3,4,4,4,4] 2、3、4 を削除 [1,1,2,4,4,4]

私はこれをやってみました:

numList=[1,2,2,3,3,4,4,4]

remList = [2,3,4]

remList の x の場合:

 numList.remove(x)

これにより、numList が [1,2,3,4,4] に変わります。これが必要です。ただし、これには次の複雑さがあります。

O((len(numList))^(len(remList)))

remList と numList の長さは 10^5 になる可能性があるため、これは問題です。プログラムの実行には時間がかかります。私が望むことをより速く行う組み込み関数はありますか?

また、プログラムは 1 秒未満で実行する必要があり、リストのサイズが大きいため、スペースと時間の観点からこのジョブを実行できる最適な関数を好みます。

4

1 に答える 1