#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http

제목Search 질문 있습니다.2020-06-14 03:08
작성자

import time


def time_it(searchMethod, lst, value):

    t1 = time.perf_counter()

    if(searchMethod(lst, value) == -1):

        print("Error in search.")

    t2 = time.perf_counter()

    return (t2-t1)


def linear_search_for(lst, value):

    i = 0

    for i in range(len(lst)):

        if lst[i] == value:

            return i

    return -1


L = list(range(10000001))


print(time_it(linear_search_for, L, 10))

print(time_it(linear_search_for, L, 5000000))

print(time_it(linear_search_for, L, 10000000))


이 코드와


import time

def time_it(searchMethod,lst,value):

    t1=time.perf_counter()

    if searchMethod(lst,value)==-1:

        print('Error')

    else:

        pass

    t2=time.perf_counter()

    return(t2-t1)


def linear_search_for(lst, value):

    for i in range(len(lst)):

        if lst[i]==value:

            return i

        elif lst[i]!=value:

            return -1

    

L=list(range(10000001))


print(time_it(linear_search_for,L,10))

print(time_it(linear_search_for,L,5000000))

print(time_it(linear_search_for,L,10000000))


이 코드의 결과값이 차이가 있다는 것을 알았습니다.

밑에 2번째 코드를 실행하면 Error이라고 값이 3번 출력이 되는데 이해가 잘 가지 않습니다.

밑에 코드대로라면 lst[i]!=-1인 경우에만 Error가 뜨는게 맞지 않나요?? 왜 위에 1번 코드처럼 return -1을 def 함수 바로 아래 둬야하는지 잘 모르겠습니다.

댓글
이전기말고사 기출문제 질문2020-06-14
다음python class 질문2020-06-13