2017-05-10 3 views
1

저는 초보자이며 방금 Python을 배우기 시작했습니다. 내 코스에서의 첫 과제 중 하나는 국가 목록에서 선형 검색을 수행하도록 요청했습니다 (선형 검색은 끔찍하지만 실제로는 연습용입니다 :)) 간단한 선형 검색을위한 코드를 찾을 수 없습니다. 정수가 포함되지 않습니다. 내가 첫 번째 단계를 있으리라 믿고있어선형 검색 - Python

이 될 배열을 만드는 것입니다 :

나는 "스페인"를 검색해야
listCountries = ['France', 'Spain', 'United Kingdom', 'Italy', 'Portugal', 'Ireland', 'Poland', 'Norway'] 

-이 사용 될지 코드?

덕분에 가정 사전

+1

정수에서 선형 검색이 그렇게 많은 이유는 무엇입니까? 문자열, 국가 등에서의 선형 검색과 다른 ...? –

+0

프로그래밍에 익숙하지 않다고 말했듯이, 배열이 정수인지 문자인지/문언인지에 따라 다른 코드를 사용한다고 가정했습니다. – ladolcevita

+1

잘 파이썬은 동적 인 언어입니다. 즉, 어떤 것도리스트에 넣을 수 있습니다. 따라서 * 많은 * (모든 경우는 아님)에서 정수 목록에 대해 작동하는 알고리즘은 말, 자동차, 목차 목록에도 적용됩니다. –

답변

1

에 당신은 선형 검색 알고리즘을 알고, 당신이 대신 정수의 문자열 비교에 문제가있다 생각합니다. (그렇지 않다면 this을 사용하십시오.)

문자열을 사전 적으로 비교하려면, 파이썬의 부울 연산자가 당신을 대신합니다. 이러한 의미에서 정수와 문자열에 대한 코드는 다를 수 없습니다. 코드를 직접주고 싶지 않으므로이 코드를 작성하는 데 도움이되기를 바랍니다.

자세한 내용은 here을 참조하십시오.

+0

첫 번째 링크를 확인한 결과 정말 도움이되었습니다. – ladolcevita

1
countries = ["France", "Spain", "United Kingdom", "Italy", "Portugal", "Ireland", "Poland", "Norway"] 

countrie_to_search = 

for index, item in enumerate(countries, 0): 
    print("index: {} country: {}".format(index, item)) 
    if item = countrie_to_search: 
     # we have a match, do what you want 
2

당신은 '스페인'목록에 있는지 알고 싶다면 당신은 다만 할 수 있습니다

'Spain' in listCountries ## returns true if the string 'Spain' is an element of listCountries 

등 인덱스

당신의 경우를 보면 유사한 내장 기능이 있습니다 수동으로 (연습을 위해) 할 수 있습니다 :

def inList (l, elem) 
    for e in l: 
    if e == elem: 
     return True 
    return False 

이렇게하면 모든 목록 요소를 반복하며, 이 True를 반환하기위한 NE 당신이 찾고 있다면 당신이 당신은 또한 당신이 할 수있는 요소의 인덱스에 대한 관심이 경우는 False

를 반환 발생하지 않는 찾고 있습니다 :

def whereInList (l,elem): ## return the index of desired element, if not in list return None 
    for i,e in enumerate(l): 
    if e == elem: 
     return i 
    return None 
0

비 - 파이썬 그러나 쉽게 접근 할 수 있습니다.

listCountries = ['France', 'Spain', 'United Kingdom', 'Italy', 'Portugal', 'Ireland', 'Poland', 'Norway'] 

i=0 
l = len(listCountries) 
while i<l: 
    if listCountries[i] == "Spain": 
     print "Spain found at index", i 
     break; 
    else: 
     i=i+1 

또한이 하나

for j in range(len(listCountries)): 
    if listCountries[j] == "Spain": 
     print "Spain found at index", j 
    else: 
     continue 

물론, 당신은 당신을 위해 모든 것을 할 것입니다 코드 아래

def look_for(c, data): 
    for j in range(len(data)): 
     if data[j] == c: 
      return c+" found at index "+str(j) 
     else: 
      continue 
    return c+" not found" 

#print look_for("Spain", listCountries) => will return Spain found at index 1 
#print look_for("USSR", listCountries) => USSR not found 
#print look_for("Finland", listCountries) => Finland not found 

, 이러한 기능 내부 조각 위에 랩 수 있습니다 -

print listCountries.index("Spain") 
))
+0

놀라운 - 감사합니다 백만. 나는 지금 그것에 매달렸다! – ladolcevita