线性搜索 - Python

时间:2017-05-10 10:28:37

标签: python

我是新手,刚开始学习Python。我在课程上的第一个任务之一就是让我在国家列表上进行线性搜索(我知道线性搜索很糟糕,但这只是为了练习:))我找不到简单线性搜索的代码这不涉及整数。

我假设第一步是创建一个数组,即:

{{1}}

我需要搜索“西班牙” - 我会使用什么代码?

提前致谢

4 个答案:

答案 0 :(得分: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

这将迭代所有list-elements,如果找到你正在查找的那个,它将返回True,如果没有遇到你要找的那个,则返回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  

答案 1 :(得分:1)

假设你知道线性搜索算法,我认为在比较字符串而不是整数时遇到问题。 (如果没有,请使用this

如果要按字典顺序比较字符串,Python中的布尔运算符会为您完成工作。从这个意义上说,整数和字符串的代码不会有所不同。希望这可以帮助你写它,因为我不想直接给你代码。

您可以阅读here了解详情。

答案 2 :(得分: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

答案 3 :(得分:0)

非pythonic但易于遵循的方法。

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")