2017-05-10 8 views
1

私は初心者で、ちょうどPythonを学び始めました。私のコースの私の最初の課題の1つは、国のリスト(私は線形検索がひどいが、それはちょうど練習のためであることを知っている)のリスト上で線形検索を実行するように頼んだ:))と私は単純な線形検索のコードを見つけることができません整数を伴わない。リニア検索 - Python

私は最初のステップは次のようになり、配列を作成することであると仮定しています:

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

私は「スペイン」を検索する必要があります - どのようなコード私はこのために使うのでしょうか?事前に

おかげで

+1

なぜ整数の線形検索がそれほど多くなるのでしょうか?文字列、国の線形検索とは異なります...? –

+0

私がプログラミングに非常に新しいと言ったように、配列が整数か文字か文言かどうかによって異なるコードを使用すると仮定しました。 – ladolcevita

+1

よくあるPythonは動的な言語です。つまり、何かをリストに入れることができます。したがって、整数リストのために働くアルゴリズムである多くの*(すべてではない)では、馬や車のリストのためにも動作します。 –

答えて

1

あなたは線形検索アルゴリズムを知っていると仮定すると、私はあなたが文字列の代わりに、整数を比較する際に問題があると思います。 (そうでない場合は、thisを使用してください)

文字列を辞書編集的に比較したい場合は、Pythonのブール演算子があなたの仕事を行います。その意味で、整数と文字列のコードは違うでしょう。私はあなたにコードを直接伝えたくないので、これを書くのに役立つことを願っています。

詳しくは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 

これはすべてのリスト要素に対して繰り返し実行されます。あなたが探していることは、あなたも、あなたが行うことができます要素のインデックスを気にした場合、それはFalse

を返し遭遇していない場合、それは、Trueが返されますためにあなたが探しているNE:

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 

また、この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

驚くべき - 100万のおかげ。私は今それのハングアップを持っている! – ladolcevita

関連する問題