Finding an element in a list I'm kind of new to Python. So, I wonder which method is better to use in a function to find an element in a list.

First:

def search_binary(xs,target):
    count = 0
    for i in xs:
        if i == target:
            return count
            count = count +1
        else:
            count = count +1
            continue
    return -1


Second:

def search_binary(xs, target):
    lb = 0
    ub = len(xs)
    while True:
        if lb == ub:   
           return -1

        mid_index = (lb + ub) // 2

        item_at_mid = xs[mid_index]


        if item_at_mid == target:
            return mid_index      
        if item_at_mid &lt; target:
            lb = mid_index + 1    
        else:
            ub = mid_index
If your list is sorted you can use binary search (your second code), and it will be faster for large lists, but if it's unsorted you'll have to keep to linear search. The Python library provides fast implementation of both methods, so you really don't need to roll your own:

&gt;&gt;&gt; a = range(10)

&gt;&gt;&gt; a.index(4) # linear search
4

&gt;&gt;&gt; import bisect
&gt;&gt;&gt; idx = bisect.bisect(a, 4) # binary search
&gt;&gt;&gt; if a[idx-1] == 4:
...     print idx - 1
... else:
...     raise ValueError('item not in list')
... 
4