contains()判断列表中是否包含某元素?
Python中的contains()函数是用来判断一个列表中是否包含某元素的函数,其语法如下:
my_list = [1, 2, 3, 4, 5]
if 3 in my_list:
print("3 is in my_list.")
运行结果为:
3 is in my_list.
以上代码中,通过in关键字来判断3是否在my_list列表中,最终得到的结果是3在my_list列表中。
contains()函数的实现原理是遍历整个列表,逐个检查列表中的元素是否与指定元素相同,如果相同则返回True,否则返回False。由于遍历整个列表的时间复杂度是O(n),因此contains()函数的实现效率并不高,特别是当列表中的元素数量很大时,效率会更低。
除了contains()函数,还有一些其他的函数可以用来判断列表中是否包含某元素,例如:
1. index()函数:如果元素存在于列表中,返回列表中该元素的索引位置,否则返回一个ValueError异常。
my_list = [1, 2, 3, 4, 5]
try:
index = my_list.index(3)
print(f"3 is in my_list at position {index}")
except ValueError:
print("3 is not in my_list")
运行结果为:
3 is in my_list at position 2
如果元素不存在于列表中,则抛出ValueError异常。
my_list = [1, 2, 3, 4, 5]
try:
index = my_list.index(6)
print(f"6 is in my_list at position {index}")
except ValueError:
print("6 is not in my_list")
运行结果为:
6 is not in my_list
2. count()函数:用于统计指定元素在列表中出现的次数。
my_list = [1, 2, 3, 4, 3, 5, 3]
count = my_list.count(3)
if count > 0:
print(f"3 appears {count} times in my_list")
else:
print("3 is not in my_list")
运行结果为:
3 appears 3 times in my_list
以上代码中,count函数返回3在my_list中出现的次数,因此最终得到的结果是3在my_list列表中,并且出现了3次。
下面是一个使用contains()函数判断列表中是否包含某元素的例子:
def foo(x):
my_list = [1, 2, 3, 4, 5]
if x in my_list:
print(f"{x} is in my_list")
else:
print(f"{x} is not in my_list")
foo(3) # 3 is in my_list
foo(6) # 6 is not in my_list
运行结果为:
3 is in my_list 6 is not in my_list
对于包含大量元素的列表,contains()函数的性能并不是最优的,这时可以考虑使用set()函数将列表转化为一个集合,这样判断某元素是否在原列表中时,可以直接通过in关键字来判断元素是否存在于集合中,这样的效率要比遍历整个列表要高。例如:
my_list = [1, 2, 3, 4, 5]
my_set = set(my_list)
if 3 in my_set:
print(f"3 is in my_list.")
运行结果为:
3 is in my_list.
以上代码中,将my_list转化为一个集合my_set,然后通过in关键字来判断3是否存在于my_set中,最终得到的结果是3存在于my_set中。这样的方法比contains()函数要快得多。但是,将列表转化为集合的过程需要一定的时间,因此仅当列表中的元素数量很大时,才值得考虑将其转化为集合。
