Python3 - Learning About Searching, This Very Simple Example Does Not Work Right
here's the code: def findsort(something, alist):     for item in alist:         if item == something:             return 'found'         else:             return 'not found'  def m
Solution 1:
Because if in the first iteration the item doesn't match, you go into the else branch returning "not found", thus exiting the loop.
Try this:
def findsort(something, alist):
    for item in alist:
        if item == something:
            return"found"return"not found"or simply:
deffindsort(something, alist):
    return"found"if something in alist else"not found"Solution 2:
@hyperboreus pointed out the cause of the error (the else branch executing before all items are seen).
To find an item in a sorted ("ordered") list you could use bisect module that performs binary search (O(log(n)) instead of linear search item in alist (O(n)) e.g., for a million items binary search would require around a couple dozen operations against a million operations for the linear search.
from bisect import bisect
findsort = lambda x, L: "found"if L and L[bisect(L,x) - 1] == x else"not found"
Post a Comment for "Python3 - Learning About Searching, This Very Simple Example Does Not Work Right"