如何在Python中检查元素是否存在于列表中
列表是Python中的一个关键容器,它能够以集合的形式存储各种类型的数据。了解特定的列表操作对于能够进行日常编程至关重要。本文将讨论最基本的列表操作之一,即验证列表中元素的存在性。
方法1:原生方法
在朴素方法中,通过循环遍历整个元素列表来验证元素是否为目标元素。这是确定列表中元素存在性的最有效方法。
方法2:使用in
Python中最常见的确定元素是否在列表中的方法是使用in。如果元素存在于列表中,则此方法返回True,否则返回False。并不需要对列表进行排序才能使用此检查方法。
代码 #1: 通过使用朴素方法和in方法演示如何检查元素是否在列表中。
# First, we will initialize list
test_list1 = [ 1, 5, 2, 6, 3, 5 ]
print ("Check if 5 exists in list (using loop): ")
# Here, we will checking if 7 exists in list using loop
for K in test_list1:
if(K == 7) :
print ("Given element Exists")
else:
print ("Given element does not exists")
print ("Check if 5 exists in list (using in): ")
# Here, we will check if 5 exists in list using in
if (5 in test_list1):
print ("Given element Exists")
else:
print ("Given element does not exists")
输出:
Check if 5 exists in list ( using loop ) :
Given element does not exists
Check if 5 exists in list ( using in ) :
Given element Exists
方法3:使用set() + in
将列表转换为集合,然后使用in可能比仅使用in更有意义。但是,作为一个优点的效率也有一些缺点。其中一个问题是列表显示的顺序没有保持。如果选择创建一个列表并创建一个新列表,则需要使用额外的空间。另一个问题是集合不允许重复元素,因此重复的元素将从列表中删除。
方法4:使用sort() + bisect_left()
传统的二分查找方法确定元素是否存在意味着列表必须首先排序,因此无法保持元素的顺序。 bisect_left() 将返回找到的第一个元素实例。它的工作方式类似于 C++ STL 中的 lower_bound()。
注意: bisect 函数只会给出元素的位置,而不提供元素是否存在的详细信息。
代码#2: 演示使用set() + in和sort() + bisect_left() 来检查列表中元素的存在。
from bisect import bisect_left as BL
from bisect import bisect as BS
# First, we will initialize list
test_list_set1 = [ 1, 5, 2, 6, 3, 5 ]
test_list_bisect1 = [ 1, 5, 2, 6, 3, 5 ]
print ("Checking if 5 exists in list (using set() + in): ")
# Check if 7 exists in list using set() + in
test_list_set1 = set(test_list_set1)
if 7 in test_list_set1:
print ("Given element Exists")
else:
print ("Given element does not exists")
print ("Checking if 7 exists in list (using sort() + bisect_left()): ")
# Check if 8 exists in list using sort() + bisect_left()
test_list_bisect1.sort()
if BL(test_list_bisect1, )!= BS(test_list_bisect1, 8):
print ("Given element Exists")
else:
print ("Given element does not exists")
输出:
Checking if 5 exists in list (using set() + in):
Given element does not exists
Checking if 7 exists in list (using sort() + bisect_left()):
Given element does not exists
方法5:使用count()函数
我们可以利用内置的Python List函数count()来验证传入的元素是否存在于列表中。如果我们传入的元素在列表中存在,那么count()函数将会显示它在整个列表中出现的次数。如果结果是一个正数,那么意味着该元素存在于列表中。
代码#3: 解释了如何通过计数来验证列表中元素的存在。
# First, we will initialize list
test_list1 = [ 1, 5, 2, 6, 3, 5, 46, 2 ]
print ("Checking if 5 exists in list: ")
# Here we will calculate the number of times element exists in list
exist_count1 = test_list1.count(5)
# Now, we will check if it is more then 0
if exist_count1 > 0:
print("Yes, 5 exists in list")
else:
print("No, 5 does not exists in list")
#Checking for another number:
print ("Checking if 46 exists in list: ")
# Here we will calculate the number of times element exists in list
exist_count2 = test_list1.count(46)
# Now, we will check if it is more then 0
if exist_count2 > 0:
print("Yes, 46 exists in list")
else:
print("No, 46 does not exists in list")
输出:
Checking if 5 exists in list:
Yes, 5 exists in list
Checking if 46 exists in list:
Yes, 46 exists in list
结论
在本教程中,我们讨论了如何使用不同的方法在Python中检查给定的元素是否存在于列表中。