Python 确定元素是否在列表中的最有效方法
所以我有Python 确定元素是否在列表中的最有效方法,python,Python,所以我有alist=[2,4,5,6,9,10],和b=6。确定b是否在alist中的更有效方法是什么 (一) (二) def拆分列表(列表,b): 中点=长度(列表)/2 如果b在python中查找列表中的内容的预期方法是使用in关键字。如果您有一个非常大的数据集,那么您应该使用为高效查找而设计的数据结构,例如集。然后您仍然可以通过中的进行查找 实际上,您所展示的函数之间的区别在于执行过程中节省时间的问题。如果您确信您的列表将始终有两个以上的成员,那么函数2会更好,但不会太多 下面是它的工作原
alist=[2,4,5,6,9,10]
,和b=6
。确定b
是否在alist
中的更有效方法是什么
(一)
(二)
def拆分列表(列表,b):
中点=长度(列表)/2
如果b在python中查找列表中的内容的预期方法是使用in
关键字。如果您有一个非常大的数据集,那么您应该使用为高效查找而设计的数据结构,例如集
。然后您仍然可以通过
中的进行查找 实际上,您所展示的函数之间的区别在于执行过程中节省时间的问题。如果您确信您的列表将始终有两个以上的成员,那么函数2会更好,但不会太多
下面是它的工作原理
功能1
if b in alist:
print " b is in alist"
这将循环遍历列表中的所有元素,只查找b,当它找到b时,它将使其成为真的,但是如果您的列表有200个成员,那么您的程序会变得敏感吗
职能2
def split_list(alist,b):
midpoint = len(alist)/2
if b<=alist[midpoint]:
alist =alist[:midpoint]:
split_list(alist,b)
else:
alist=alist[midPoint:]
split_list(alist,b)
但是如果您不想让它显示一个元素出现了多少次,并且只有一个元素满足您的需要!这也是使用列表的一些内置函数实现的另一种方法
def is_inside(alist,b):
try:
which_position=alist.index(b) #this methods throws an error if b is not in alist
return True
except Error:
return False
因此,当使用专门用于列表的内置函数时,生活变得简单。你应该考虑阅读如何使用列表,当他们很长时间的执行程序,如队列,栈,队列,集合的性能。
好的来源是文档本身,因为它的排序二进制搜索速度稍快一些。。。也就是说,这取决于列表的大小。。。更大的列表将有更大的好处。。。你可以很容易地用timeit
模块做一个实验(虽然最快的方法是使用集合而不是列表…,但是如果你需要转换它,你可能会失去你的速度)@manuzi1使用time.time()来分析代码的错误形式。。。取而代之的是时间它要好得多…@PeterChao查看对分
模块,而不是编写自己的递归二进制搜索。答案是“这取决于”。对于您给出的列表,我敢打赌(1)比(2)快。对于更长的列表,(2)可能更快。@ForceBru-nope-它使用线性扫描-没有什么聪明的。性能取决于列表的长度和找到值的时间(如果有)。这是如何解决问题的?(请注意,我不认为有一个有效的答案可以接受这个问题的当前形式)我重新阅读了这个问题,我承认他的问题只是问哪个更有效。从这个角度来看,这不是一个很好的答案。但我也认为,作为一个实际问题,重要的是要认识到a)对于他的例子来说,性能并不重要,b)如果性能重要,那么最好的解决方案是不同的数据结构。
def split_list(alist,b):
midpoint = len(alist)/2
if b<=alist[midpoint]:
alist =alist[:midpoint]:
split_list(alist,b)
else:
alist=alist[midPoint:]
split_list(alist,b)
def is_inside(alist,b):
how_many=alist.count(b) #return the number of times x appears in the list
if how_many==0:
return False
else:
return True
#you can also modify the function in case you want to check if an element appears more than once!
def is_inside(alist,b):
try:
which_position=alist.index(b) #this methods throws an error if b is not in alist
return True
except Error:
return False