我是新手,刚开始学习Python。我在课程上的第一个任务之一就是让我在国家列表上进行线性搜索(我知道线性搜索很糟糕,但这只是为了练习:))我找不到简单线性搜索的代码这不涉及整数。
我假设第一步是创建一个数组,即:
{{1}}
我需要搜索“西班牙” - 我会使用什么代码?
提前致谢
答案 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")