Python代码阅读合集介绍:为什么不建议Python初学者直接看项目源码本文阅读的代码实现了对符合条件的搜索元素在列表的位置。本文阅读的代码片段来自30-seconds-of-python。find_indexdeffind_index(lst,fn):returnnext(ifori,xinenumerate(lst)iffn(x))#示例find_index([1,2,3,4],lambdan:n%2==1)#find_index函数接收一个列表和一个判别函数,返回第一个使判别函数为真的元素的下标。该函数使用列表推导、enumerate()和next()返回lst中第一个元素的索引,判别函数fn为该元素返回True。next(iterator[,default])获取迭代器的下一个元素。如果迭代器耗尽,则返回给定的默认值,或者如果没有默认值,则触发StopIterationenumerate(iterable,start=0)。返回一个枚举对象。enumerate()返回的迭代器的__next__()方法返回一个元组,包含一个计数值(从start开始,默认为0)和迭代iterable得到的值。如果start从0开始,就相当于得到了list的下标。>>>seasons=['Spring','Summer','Fall','Winter']>>>list(enumerate(seasons))[(0,'Spring'),(1,'Summer'),(2,'秋季'),(3,'冬季')]>>>list(enumerate(seasons,start=1))[(1,'春季'),(2,'夏季'),(3,'Fall'),(4,'Winter')]find_last_index类似,可以实现find_last_index函数,使用lst[::-1]slice形式对链表进行反转。然后用len(lst)和反转列表中第一个满足判别函数的元素的位置,计算出该元素在原列表中的位置。deffind_last_index(lst,fn):returnlen(lst)-1-next(ifori,xinenumerate(lst[::-1])iffn(x))#EXAMPLESfind_last_index([1,2,3,4],λn:n%2==1)#2
