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