像这样吗
def select(lst, *indices): return (lst[i] for i in indices)
用法:
>>> def select(lst, *indices):... return (lst[i] for i in indices)...>>> L = range(0,101,10)>>> a, b = select(L, 2, 5)>>> a, b(20, 50)
该函数的工作方式是返回一个生成器对象,该对象可以类似于任何种类的Python序列进行迭代。
正如@justhalf在注释中指出的那样,可以通过定义函数参数的方式来更改您的调用语法。
def select(lst, indices): return (lst[i] for i in indices)
然后可以使用以下命令调用该函数:
select(L, [2, 5])
或您选择的任何列表。
更新: 我现在建议使用
operator.itemgetter代替,除非您确实需要生成器的惰性评估功能。请参阅John
Y的答案。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)