我需要编写一个搜索列表以查找给定项目的匹配项的函数。该函数带有两个参数:列表和目标项目。它返回两个值:布尔值,指示列表中是否存在该项目;如果该项目确实存在,则为匹配项目的索引。
答案 0 :(得分:1)
如何使用2个参数编写函数?
那很简单:
def aFunction(theList, theTargetItem):
return (True, 2)
:
(aBooleanValue, theIndex) = aFunction([1, 2, 3, 4], 3)
您显然必须充实函数(a)的力学,以使其符合规范,但我给出的是框架您可以在其上进行构建。
就此而言,您需要遍历列表(保持索引更新),并在找到要查找的值时返回索引。如果您找不到在循环结束之前找不到该值,请返回一个-1
之类的小数值。
我不会为您做那么多的事情,因为它几乎可以肯定是课堂工作(b),但我会为您指明正确的方向。像for i in range(7): print(i)
这样的语句是如何遍历0
到6
之间的值。表达式len(x)
将为您提供集合x
的长度。 x[y]
是您引用集合y+1
的第x
个元素的方式。
(a)目前,它可用于我使用的非常有限的测试数据,但您可能想在此基础上进行扩展:-)
(b)并且您将自己做些事,并得到一些指导,从而进一步学习 far 。这也是为什么我不理会更高级的Python东西的原因,因为我假设这里的目的是学习如何编码,而不是学习如何编写惯用的Python。
如果您真的想要后者,则可以在以下程序中使用类似searchList
的功能:
def searchList(theList, theItem):
try:
theIndex = theList.index(theItem)
except:
return (False, None)
return (True, theIndex)
mylist = [x + 1for x in range(10)]
print(mylist)
print(searchList(mylist, 2))
print(searchList(mylist, 7))
print(searchList(mylist, 99))
这将按预期输出:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
(True, 1)
(True, 6)
(False, None)
但是我不认为这适合上初学者课。
答案 1 :(得分:0)
ls, item = input("Enter comma-separated values: ").split(","), input('Enter an item: ')
def slist(ls,item):
try: ind,inls = ls.index(item), True
except: ind,inls = None, False
return inls,ind
inls,ind = slist(ls,item)
print('In list: %s' % inls,'\nIndex: %s' % ind)
答案 2 :(得分:0)
只需使用in
运算符就可以验证列表中是否存在所需的项目。然后,使用list.index(item)
获取该项目的索引。
def function_name(l,item):
if item in l:
return True, l.index(item)
else:
return False, -1