List は、すべてのデータ型の要素をコレクションとして格納するため、Pythonの重要なコンテナです。 特定のリスト操作の知識は、一日のプログラミングのために必要です。 この記事では、基本的なリスト操作の1つ、リスト内の要素の存在を確認する方法について説明します。
方法1:ナイーブ法
ナイーブ法では、ターゲット要素の存在を確認するために、すべての要素を反復するループを簡単に使用することができます。
Method 2 : Using in
Python in
はリストに要素が存在するかどうかを確認する最も一般的な方法である。 この方法は、要素がリストに存在する場合は真を、要素がリストに存在しない場合は偽を返します。 この方法を実行するために、リストはソートされている必要はありません。
コードその1. Naiveメソッドとin
によりリスト内の要素の存在をチェックするデモ。
test_list
=
print
(
"Checking if 4 exists in list ( using loop ) : "
)
for
i
in
test_list:
if
(i
=
=
4
) :
print
(
"Element Exists"
)
print
(
"Checking if 4 exists in list ( using in ) : "
)
if
(
4
in
test_list):
print
(
"Element Exists"
)
出力:
Checking if 4 exists in list ( using loop ) : Element ExistsChecking if 4 exists in list ( using in ) : Element Exists
方法3:set()
+ in
リストを集合に変換してからinを使用すると、 in
だけを使用するより効率的になる可能性があります。 しかし、効率が良いということは、ある種のマイナス面もあります。 その一つは、リストの順序が保持されないことで、そのために新しいリストを取ることを選ぶと、余分なスペースを使用する必要があります。
方法4:sort()
+ bisect_left()
要素の存在をテストする従来のバイナリ検索方法、したがって、リストを最初にソートする必要があり、したがって、要素の順序が保持されません。 bisect_left()
は最初に見つかった要素を返し、C++ STL の lower_bound() に似た働きをします。
Code #2 : set()
+ in
と sort()
+ bisect_left()
を使ってリスト中の要素の存在をチェックするデモ。
from
bisect
import
bisect_left
test_list_set
=
test_list_bisect
=
print
(
"Checking if 4 exists in list ( using set() + in) : "
)
test_list_set
=
set
(test_list_set)
if
4
in
test_list_set :
print
(
"Element Exists"
)
print
(
"Checking if 4 exists in list ( using sort() + bisect_left() ) : "
)
test_list_bisect.sort()
if
bisect_left(test_list_bisect,
4
):
print
(
"Element Exists"
)